为了账号安全,请及时绑定邮箱和手机立即绑定

测试是否从Shell脚本打开了远程TCP端口

测试是否从Shell脚本打开了远程TCP端口

API
阿晨1998 2019-11-04 15:51:01
我正在寻找一种快速,简单的方法来从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 1else  echo "Connection to $SERVER on port $PORT succeeded"  exit 0fi我或者需要一种更好的方法,或者是一种强制telnet超时的方法(例如,如果它在8秒内没有连接),然后返回我可以在Shell中捕获的内容(返回代码或stdout中的字符串)。我知道Perl方法,该方法使用IO :: Socket :: INET模块并编写了成功的脚本来测试端口,但如果可能的话,希望避免使用Perl。注意:这就是我的服务器正在运行的(我需要从中运行)SunOS 5.10 Generic_139556-08 i86pc i386 i86pc
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

正如B. Rhodes指出的那样,nc将完成此工作。一种更紧凑的使用方式:


nc -z <host> <port>

这样nc只会检查端口是否打开,成功则以0退出,失败则以1退出。


快速互动检查(5秒超时):


nc -z -v -w5 <host> <port>


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 896 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信