最近客户有一个需求要检测两台服务器之间的通信状态。要是通信是失败就需要邮件通知相关人。本来想用shell来实现,shell脚本ping 对端服务器很简单,但是shell的邮件发送比较麻烦,于是使用python实现并且用smtplib模块可以快速实现邮件的发送。
功能如下:1秒钟ping一次目标地址。代码中把你的邮箱改为自己的就可以,
代码:
#coding:utf-8importsocketimportsmtplibimportemail.MIMETextimportemail.HeaderimporttimeimportosdefsendEmail(msg,passwd='',smtpAddr=''):iftype(msg['to'])==str:tos=[msg['to']]else:tos=msg['to']m=email.MIMEText.MIMEText(msg['content'])m['to']=','.join(tos)m['From']=msg['from']m['Subject']=email.Header.Header(msg['subject'],msg['charset'])m.set_charset(msg['charset'])s=smtplib.SMTP()socket.setdefaulttimeout(16)s.connect(smtpAddr)try:ifpasswd:s.login(msg['from'].split('@')[0],passwd)returns.sendmail(msg['from'],tos,m.as_string())finally:s.close()if__name__=='__main__':whileTrue:date=time.strftime('%Y-%m-%d%H:%M:%S')ip="192.168.1.1"ping=os.system("ping-c1%s"%ip)ifping:msg={'from':'***@***.com','to':['****@'],'charset':'utf-8','subject':"Ping%sfailed."%ip,#定义邮件主题,'content':"%sPing%sfailedfrom255.252."%(date,ip)}sendEmail(msg,passwd='你的密码',smtpAddr='你的smtp服务器如:')print"Ping%sfailed,Haveemail."%ipelse:print"Ping%ssuccessful."%ipprint"Sleep1s..."time.sleep(1)
测试的邮件报警:
如果觉得《pyton 编写脚本检测两台主机之间的通信状态 异常邮件通知》对你有帮助,请点赞、收藏,并留下你的观点哦!