我正在寻找一种快速简单的方法来在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
我需要一种更好的方法,或者一种能够强制telnet在8秒内连接并返回可以在Shell中捕获的东西(返回码或stdout字符串)的方法。
我知道Perl方法,它使用IO::Socket::INET模块并编写了一个成功测试端口的脚本,但如果可能的话,我宁愿避免使用Perl。
注意:这是我的服务器正在运行的内容(我需要从该服务器运行此内容)
SunOS 5.10 Generic_139556-08 i86pc i386 i86pc