Python监控主机是否存活并以邮件报警
利用Python写了简单测试主机是否存活脚本,此脚本不适于线上使用,因为网络延迟、丢包现象会造成误报邮件,那么后续会更新判断三次ping不通后再发报警邮件,并启用多线程处理。
#!/usr/bin/envpython #coding:UTF-8 importtime importpexpect importsmtplib fromemail.mime.textimportMIMEText mail_host="smtp.163.com"#定义smtp服务器 mail_to="baojingtongzhi@163.com"#邮件收件人 mail_from="monitor@163.com"#邮件发件人 mail_pass="123456"#邮件发件人邮箱密码 whileTrue: defMail(error_ip): date=time.strftime('%Y-%m-%d%H:%M:%S') msg=MIMEText("%sPing%sfailedfrom255.252."%(date,error_ip)) msg['Subject']="Ping%sfailed."%error_ip#定义邮件主题 msg['From']=mail_from msg['To']=mail_to try: s=smtplib.SMTP()#创建一个SMTP()对象 s.connect(mail_host,"25")#通过connect方法连接smtp主机 s.starttls()#启动安全传输模式 s.login(mail_from,mail_pass)#邮箱账户登录认证 s.sendmail(mail_from,mail_to,msg.as_string())#邮件发送 s.quit()#断开smtp连接 exceptException,e: printstr(e) ip_list=['192.168.18.10', '192.168.18.11', '192.168.18.12'] foripinip_list: ping=pexpect.spawn('ping-c1%s'%ip) check=ping.expect([pexpect.TIMEOUT,"1packetstransmitted,1received,0%packetloss"],2)#2代表超时时间 ifcheck==0: Mail(ip) print"Ping%sfailed,Haveemail."%ip ifcheck==1: print"Ping%ssuccessful."%ip print"Sleep10s..." time.sleep(10) #直接运行 #pythonping.py Ping192.168.18.10successful. Ping192.168.18.11successful. Ping192.168.18.12successful. Sleep10s...
以上就是本文的全部内容,希望对大家学习Python监控主机是否存活并以邮件报警有所帮助。