最近由于服务器托管中心频繁出现网络故障问题,因此写了一简单的py程序,用于检测网络状态。实现的原理相当简单,运行ping命令发送30个数据包,如果超过30%的丢失,则认为故障发生,然后做故障处理,如写日志,发邮件。主要函数
这里需要注意的是丢失包的获取,我的系统运行ping命令返回的结果是... 30% packet loss ,所以我的正则表达式是'(\d+)% packet loss',而有的返回结果为... 30.0% packet loss ,则表达式要改变下。
deal_error为处理函数,将info写于日志文件,并发送邮件
由于本人还在py初步学习中,如果有更好的方法实现,请指教,谢谢了!
import os def monitoring(server_ip): cmd = "ping -c 30 %s" % server_ip p = os.popen(cmd) info = p.read() p.close() re_lost_str = '(\d+)% packet loss' lost_packet = int(self.re.search(re_lost_str, info).group(1)) #获得丢失包数据 if lost_packet > 30: deal_error(info) #故障处理函数
这里需要注意的是丢失包的获取,我的系统运行ping命令返回的结果是... 30% packet loss ,所以我的正则表达式是'(\d+)% packet loss',而有的返回结果为... 30.0% packet loss ,则表达式要改变下。
deal_error为处理函数,将info写于日志文件,并发送邮件
由于本人还在py初步学习中,如果有更好的方法实现,请指教,谢谢了!
