我正在寻找一种快速而简单的方法,用于在Shell脚本内部正确测试远程服务器上的给定TCP端口是否打开.
我已经设法使用telnet命令,并且它在端口打开时工作正常,但它似乎没有超时,当它不是,只是挂在那里...
这是一个示例:
l_TELNET=`echo "quit" | telnet $SERVER $PORT | grep "Escape character is"`
if [ "$?" -ne 0 ]; then
echo "Connection to $SERVER on port $PORT failed"
exit 1
else
echo "Connection to $SERVER on port $PORT succeeded"
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
我要么需要一个更好的办法,还是有办法来强制远程登录超时如果它没有下8秒连接,例如,和(在标准输出返回码,或字符串)返回的东西我可以赶上壳.
我知道Perl方法,它使用IO :: Socket :: INET模块并编写了一个测试端口的成功脚本,但是如果可能的话,我宁愿避免使用Perl.
注意:这是我的服务器运行的地方(我需要从中运行它)
SunOS 5.10 Generic_139556-08 i86pc i386 i86pc
我试图找出是否可以在单个sed命令中编辑文件,而无需手动将已编辑的内容流式传输到新文件中,然后将新文件重命名为原始文件名.我尝试了这个-i选项,但我的Solaris系统说这-i是一个非法的选择.有不同的方式吗?
在Linux上,我使用stat --format="%s" FILE,但我有权访问的Solaris没有stat命令.那我应该怎么用?
我正在编写Bash脚本,无法在系统上安装任何新软件.
我考虑过已经使用过:
perl -e '@x=stat(shift);print $x[7]' FILE
Run Code Online (Sandbox Code Playgroud)
甚至:
ls -nl FILE | awk '{print $5}'
Run Code Online (Sandbox Code Playgroud)
但这些看起来都不合理 - 运行Perl只是为了获得文件大小?或者运行2个命令来做同样的事情?
如果我发出find命令如下:
$ find . -name *.ear
Run Code Online (Sandbox Code Playgroud)
打印出来:
./dir1/dir2/earFile1.ear
./dir1/dir2/earFile2.ear
./dir1/dir3/earFile1.ear
Run Code Online (Sandbox Code Playgroud)
我想在命令行上"打印"的是名称和大小:
./dir1/dir2/earFile1.ear 5000 KB
./dir1/dir2/earFile2.ear 5400 KB
./dir1/dir3/earFile1.ear 5400 KB
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种计算crc校验和跨平台的方法.
cksum适用于Linux,AIX,HP-UX Itanium,Solaris,cksum在windows中是否有相同的linux命令?
%cksum run.sh
1491301976 652 run.sh
Run Code Online (Sandbox Code Playgroud)
注意:没有第三方工具
我正在处理在Solaris服务器上运行的KornShell(ksh)脚本,该脚本将在满足错误条件时发送电子邮件.我通过mailx发送电子邮件.
问题: 如何在mailx命令中设置"发件人"电子邮件地址?
现行代码:
echo ${msg_txt} | mailx -s "Script Failure" ${to_email}
Run Code Online (Sandbox Code Playgroud)
注意:该命令工作正常,但是,"From"是我正在运行脚本的用户的名称,我希望将其用于另一个电子邮件地址.
我怎么做到这一点?
当我想知道我登录的Solaris机器的IP地址时,我想发出什么命令?
所以我登录到Solaris框,尝试启动Apache,并发现已经有一个进程正在侦听端口80,而且它不是Apache.我们的盒子没有安装lsof,所以我不能用它来查询.我想我能做到:
pfiles `ls /proc` | less
Run Code Online (Sandbox Code Playgroud)
并寻找"端口:80",但如果有人有更好的解决方案,我全都耳朵!如果我可以在没有root的情况下寻找听力过程,那就更好了.我对shell和C解决方案都持开放态度; 我不介意有一个小的自定义可执行文件随身携带,以便下次出现.
更新:我说的是solaris的通用安装我不是管理员(虽然我有超级用户访问权限),所以从免费软件磁盘安装东西不是一个选项.显然,两者都没有使用针对fuser,netstat或其他工具的特定于Linux的扩展.到目前为止,在所有进程上运行pfiles 似乎是最好的解决方案,不幸的是.如果仍然如此,我可能会发布一个答案,其中包含一些稍微更高效的代码.
在Linux sed -i上将修改输入文件.但它在Solaris上不起作用.
sed -i '$ s/OLD/NEW/g' test
sed: illegal option -- i
Run Code Online (Sandbox Code Playgroud)
我可以sed -i在Solaris上使用什么代替?