不要跟我讲什么VXLAN、SDN,

老夫搞了十几年网络就是‘一把梭’,配VLAN、默认路由,Permit any any,插上console就是干,通了就走!

使用Python检测主机业务运行状态

前言

最近比较空闲,继续自学Python,写个小代码练习练习,还是新手,多多包含。

上一篇文章中说到使用ping命令来测试主机是否在线,但是很多情况主机的防火墙是开启了,这样默认情况下使用ping是无法真正知道主机是否真的在线,同时有些主机是向外提供服务的,所以业务在线的情况也需要去监控。

思路

一般很普遍的测试方法就是使用telnet命令去测试端口的连接情况,例如:telnet 127.0.0.1 80。这个是一个方法,就像上一篇文章一样使用Popen来运行telnet命令,但是这用方式存在一个问题就是很多情况没有返回信息,这样就无法使用返回信息来确定telnet是否成功。还有一个思路是使用os.system来执行telnet命令,这样会有一个返回值,这个我还没有去尝试,不知道能不能成功。

现在有一个比较好的方法,使用stocket模块的connect方法来实现对端口的测试,通过异常处理来判断是否连接成功。

代码

# -*- coding:UTF-8 -*-
import socket
def monitor(ip, port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(3)
    host = (ip, port)
    try:
        s.connect(host)
        print('已经成功连接%s的%d端口!' % (ip, port))
    except Exception:
        print('无法连接%s的%d端口!' % (ip, port))
    s.close()
if __name__ == "__main__":
    ip = input('请输入需要测试的主机ip地址:')
    port = int(input('请输入测试的端口:'))
    monitor(ip, port)

总结

虽然是简单的实现了功能,但是还是可以完善不少地方,后面有空继续自我学习,继续完善。

点赞