脚本中批量处理远程主机的端口是否打开-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

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

简介:
+关注继续查看

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

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

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

 wKiom1itk5jCGs0fAAAjn_25eVA083.png     我必须再次输入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

wKioL1itlXbAk6-KAADFOP0g0xw770.png-wh_50

    再来看,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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Nginx极简入门(三)基于端口的虚拟主机配置
前面讲了如何配置基于IP的虚拟主机,今天讲一讲Nginx如何基于端口的虚拟主机。 需要说明的是:由于本文章是nginx系列文章中的一篇,文章里面很多其他的配置,可能前面的文章已经说讲过,然后后续就没有在介绍,如果出现有些配置没有讲,大家可能需要去看看前面的文章。
282 0
13694
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载