您现在的位置:首页 > 前端开发 > Python

运维自动化之使用Python检测主机业务运行状态

使用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)

总结

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

版权所有
侵权必究

上一篇
Python Flask-SocketIO 使用Https加密访问的方法
下一篇
Python(二)数据类型