python探测服务器端口连通性

现在有一个运维场景是这样的,一共有三台机器,其中的1台类似是另外两台的数据中传站角色,由于业务比较特殊,要求实时能够监控这几台机器的网络连通性,如果发现有问题,就及时报警,基于以上背景,刚开始打算用shell 和telnet来实现,发现不太好用,因为要处理telnet成功后退出的问题,最后还是用了python写了一个简单的脚本实现了该功能,为方便多次使用,做成了可配置的,自带配置文件,只要配置好需要测试的机器的IP和端口,就很方便测试,功能代码如下:

配置文件名称cfg.ini,格式为:

代码写的比较简单,只用了python的一个socket模块,核心几行解释下:

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

这行是创建TCP/IP套接字,套接字分两种,一种是基于文件型的,一种是基于网络的,比如:socket.AF_INET,就是基于网络的,网络的通讯在开始前都需要创建套接字, 这就跟电话机线插口一样,没它没法打电话,socket本身的英语解释就有插座的意思,socket.SOCK_STREAM,表示采用是TCP套接字,其实可以这么理解,STREAM单词有流的感念,类似水流的感觉,大家可以想象,既然有水流的感觉,就是不能间断,所以就是建立的TCP套接字,我一直是这么理解的,重在理解,方法随意,另外不用猜,除了TCP,对应肯定有UDP套接字,

sock.settimeout(5)    #设置超时时间
sock.connect((add, port))   #建立好套接字后,connect是套接字对象的内建方法,因为python是面向对象的语言,所以这也很好理解,每个对象都会带有很多方法或属性。

其它语句就不说了,链接成功就返回True,有任何错误就返回Flase,逻辑比较简单。

程序运行后是死循环,如果发现网络出现不可访问情况,将打印出一行错误日志,具体处理的方法当然有很多了,可以发邮件,也可以发短信报警,就不多说了。

 

python探测服务器端口连通性》上有1条评论

  1. Pingback引用通告: 消费kafka报java.nio.channels.ClosedChannelException – 源码巴士

评论已关闭。