最近由于服务器托管中心频繁出现网络故障问题,因此写了一简单的py程序,用于检测网络状态。实现的原理相当简单,运行ping命令发送30个数据包,如果超过30%的丢失,则认为故障发生,然后做故障处理,如写日志,发邮件。主要函数
这里需要注意的是丢失包的获取,我的系统运行ping命令返回的结果是...[color=red]30% packet loss[/color],所以我的正则表达式是'(\d+)% packet loss',而有的返回结果为...[color=red]30.0% packet loss[/color],则表达式要改变下。
deal_error为处理函数,将info写于日志文件,并发送邮件
由于本人还在py初步学习中,如果有更好的方法实现,请指教,谢谢了! :D
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命令返回的结果是...[color=red]30% packet loss[/color],所以我的正则表达式是'(\d+)% packet loss',而有的返回结果为...[color=red]30.0% packet loss[/color],则表达式要改变下。
deal_error为处理函数,将info写于日志文件,并发送邮件
由于本人还在py初步学习中,如果有更好的方法实现,请指教,谢谢了! :D