脚本中批量处理远程主机的端口是否打开

    上午接到任务,将来业务上线前,要求我们先做一下我们系统业务与其他系统业务的连通性测试。包括ping测试(网络是否连通)、端口是否打开。领导给的意见是使用telnet,因为之前他们的业务也是这样测试的,但是他具体的细节忘了。要求我完成一个脚本实现该功能。

    当然,大家都知道ping测试只能测网络是否可达,但是具体的端口是否开发是无法用ping测试的。我就先去使用telnet去实现。由于我只是想通过使用telnet来实现判断,并不想真正去做登录端口。

在我做实验时,变出现了以下的问题

 脚本中批量处理远程主机的端口是否打开     我必须再次输入quit才能退出。这对于批量处理来说简直是崩溃的。后来求助网友,有人说可以使用nc。这个我是知道可以的,因为我自己上网搜索也有人这样使用。但是我们环境的要求,不能随便安装软件,并且还要审批,非常复杂。再加上领导以前确实是通过telnet实现的。我也相信telnet确实可以实现,只不过我不知道。后来我就去查看man telnet。最后,实践着实践着。就发现。我可以这样:

[root@centos6~]#echo q|telnet -e 'q' 192.168.0.103 22

Telnet escape character is 'q'.

Trying 192.168.0.103...

Connected to 192.168.0.103.

Escape character is 'q'.


telnet> Connection closed.

[root@centos6~]#echo q|telnet -e 'q' 192.168.0.103 22 > /dev/null

[root@centos6~]#echo $?

0

脚本中批量处理远程主机的端口是否打开

    再来看,telnet 一个没有打开的端口。这样我就可以无需登录某端口实现判断其是否开放。

[root@centos6~]#echo q|telnet -e 'q' 192.168.0.103 222 > /dev/null 

telnet: connect to address 192.168.0.103: No route to host

[root@centos6~]#echo $?

1

    现在来看,我已经解决了telnet的问题,那么就好说了。

    我脚本的思路首先是通过ping来判断网络通不通,再次使用telnet来判断端口是否打开。

    现在复习一下ping命令,简单说一下ping -c 10 -i 0.2 192.168.0.103,向192.168.0.103发送间隔为0.2s,总数为10个的报文。每个系统的最小间隔可能不同,有时需要调整改值。还有一个叫nc的命令也可以很好地判断端口是否开放。如:nc -z 192.168.0.103 22 



本文转自 ping9527 51CTO博客,原文链接:http://blog.51cto.com/babyhanggege/1900359,如需转载请自行联系原作者

上一篇:weblogic管理3 - 生产模式下免密码管理配置


下一篇:盗版源码骚扰下,如何选择正确的PHP视频直播系统源码