资源描述:
《python实现批量探测IP存活性并发送邮件告警》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、python实现批量探测IP存活性并发送邮件告警前言:运维工程师在实际运维过程中,由于需要监控的IP主机数量过多且单位又没有一个监控软件使用导致日常巡检几十台或几百台主机就非常麻烦,有时候主机发生死机或宕机这样严重的故障又不能及时发现存在重大安全隐患,那么python脚本实现内网主机存活性探测且带有邮件告警功能就能帮助运维工程师解决这些问题。好了,废话不多说,直接上图!正文:多数代码都有借鉴网上一些大神的劳动成果,小菜只是将其综合揉捏在一起,请大神们多多见谅!代码一定要在linux系统中运行,window环境中有其个别模块不支持!Attachment.py:邮件告警模块
2、Auto_ping.py:批量ping工具IP.txt:需要监控的系统或主机IP列表Running_again.py:轮询主程序Timeout.txt:邮件告警转发内容Attachment.py代码如下:auto_ping.py代码如下:runing_again.py代码如下:IP.txt中IP地址格式如下:Timeout.txt文件为空就行:Liunx环境下运行runing_again.py结果如下:我的外网邮箱中收到告警邮件:attachment.py源代码内容:#coding=utf-8#!/usr/bin/python#发送邮件模块importosimports
3、ysimportsmtplibfromemail.mime.multipartimportMIMEMultipartfromemail.mime.textimportMIMETextfromemail.mime.imageimportMIMEImage#读取timeout.txt文件名file_path=sys.path[0]listfile=os.listdir(file_path)att_name=listfile[4]#发送者邮件地址、用户名、密码sender='yangXX.cn'receiver='yangXX.cn'subject="pythontestme
4、ssage"smtpserver='mail.XX.cn'username='yanglXX.cn'password='XXXX'#发送邮件的标题,和邮件附件msgRoot=MIMEMultipart('related')msgRoot['Subject']=att_nameatt=MIMEText(open(att_name,'rb').read(),'base64','utf-8')att["Content-Type"]='application/octet-stream'att["Content-Disposition"]='attachment;filename
5、='+att_namemsgRoot.attach(att)#连接邮件服务器域名,带入认证用户名和密码smtp=smtplib.SMTP()smtp.connect('mail.XX.cn')smtp.login(username,password)smtp.sendmail(sender,receiver,msgRoot.as_string())smtp.quit()auto_ping.py源代码内容:#coding=utf-8#!/usr/bin/python#批量ping模块importpexpectfromthreadingimportThreadimportd
6、atetimeimportos#打开IP.txt文件读取需要监控的ip地址hostIP=[]e=open("IP.txt","r")foriine:i=i.replace("","")hostIP.append(i)e.close()report_ok=[]report_error=[]classPING(Thread):def__init__(self,ip):Thread.__init__(self)self.ip=ipdefrun(self):Curtime=datetime.datetime.now()#Scrtime=Curtime+datetime.ti
7、medelta(0,minute,0)#print("[%s]主机[%s]"%(Curtime,self.ip))ping=pexpect.spawn("ping-c1%s"%(self.ip))check=ping.expect([pexpect.TIMEOUT,"1packetstransmitted,1received,0%packetloss"],2)ifcheck==0:print("[%s]超时%s"%(Curtime,self.ip))f=open("timeout.txt","a")f.write(self.ip+""