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监控主机是否存活并以邮件报警有所帮助。