python 发邮件 脚本
来源:互联网 发布:线切割手工编程割直线 编辑:程序博客网 时间:2024/05/20 18:47
#!/usr/bin python#coding:UTF-8from email.header import Headerimport smtplibimport email.MIMEMultipart# import MIMEMultipartimport tracebackimport email.MIMEText# import MIMETextimport email.MIMEBase# import MIMEBaseimport os.pathimport sysimport timeimport mimetypesimport email.MIMEImage# import MIMEImageimport jsonclass sendmail: """this is for sendmail""" def __init__(self,email_addr,msg,headerr): #命令 mail.py <1:发送方(回复地址)380968195@qq.com> <2:发送地址,多个以;隔开> <3:发送文件> self.ReplyTo = email_addr self.headerr = headerr self.From = "%s<lingmain.lin@xxx.cn>" % Header(self.headerr,"utf-8") self.To = email_addr self.msg = msg #附件路劲和名称 self._init_server() def _init_server(self): #self.server = smtplib.SMTP("smail.xxx.cn",25) self.server = smtplib.SMTP() self.server.connect("smtp.exmail.qq.com") print self.server self.server.login("lingmain.lin@xxx.cn","passwd") #仅smtp服务器需要验证时 self._init_msg() def _init_msg(self): self.main_msg = email.MIMEMultipart.MIMEMultipart()# 构造MIMEMultipart对象做为根容器 self.text_msg = email.MIMEText.MIMEText(self.msg,_charset="utf-8")# 构造MIMEText对象做为邮件显示内容并附加到根容器 self.main_msg.attach(self.text_msg) ctype,encoding = mimetypes.guess_type('') if ctype is None or encoding is not None: ctype='application/octet-stream'# 构造MIMEBase对象做为文件附件内容并附加到根容器 maintype,subtype = ctype.split('/',1) # 设置根容器属性 self.main_msg['From'] = self.From self.main_msg['Reply-to'] = self.ReplyTo self.main_msg['To'] = self.To self.main_msg['Subject'] = time.strftime("%Y%m%d", time.localtime(time.time()))+self.headerr self.main_msg['Date'] = email.Utils.formatdate(localtime = 1) #main_msg['Bcc'] = To # 得到格式化后的完整文本 self.fullText = self.main_msg.as_string() # 用smtp发送邮件 try: self.server.sendmail(self.From, self.To.split(';'), self.fullText) finally: self.server.quit()class monitor:"""this is for disk monitor"""def __init__(self):passdef get_machine_info(self): cmd = "/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d 'addr:'" result = os.popen(cmd) ip = result.read().strip() return ip def disk_monitor(self,maillist,threshold):cmd = "df -H | grep -o [0-9]*% | grep -o '[0-9]\+'"result = os.popen(cmd) for item in result: if int(item.strip()) > int(threshold): print "disk is not enough!" file_date = time.strftime("%Y%m%d %H:%M:%S", time.localtime(time.time()-86400)) sendmail(maillist,"机器 "+self.get_machine_info()+" 磁盘超过报警阈值 请及时进行处理,时间为%s" %(file_date),"磁盘监控报警") def inode_monitor(self,maillist,threshold): cmd = "df -i | grep -o [0-9]*% | grep -o '[0-9]\+'"result = os.popen(cmd) for item in result: if int(item.strip()) > int(threshold): file_date = time.strftime("%Y%m%d %H:%M:%S", time.localtime(time.time()-86400)) print "inode is not enough!" sendmail(maillist,"机器 "+self.get_machine_info()+" inode超过报警阈值 请及时进行处理,时间为%s" %(file_date),"inode监控报警") def crm_api_monitor(self,maillist): try: begin = time.time() cmd = 'curl -H "Content-type: application/json" -X POST -d \'{"query_where": [{"item": "crm__crm_basic_tags__vip_level","query": [{"op": "=","value": "1"},{"op": "=","value": "2"}]}]}\' http://localhost:8080/bigdata/crm/getGroupResCount' result = os.popen(cmd) tmp = str(result.read()) re = json.loads(tmp) file_date = time.strftime("%Y%m%d %H:%M:%S", time.localtime(time.time()-86400)) if re['code'] == 200: print "success" else: sendmail(maillist,"机器 "+self.get_machine_info()+"crm 获取数量接口出现异常 请及时进行处理,时间为%s" %(file_date),"crm接口报警") end = time.time() delta = end - begin print type(delta) if delta > 1.5: print "chaognshi" sendmail(maillist,"机器 "+self.get_machine_info()+"crm 获取数量接口出现超时 请及时进行处理,时间为%s" %(file_date),"crm接口报警") except Exception,e: print "failure!" traceback.print_exc(e) sendmail(maillist,"机器 "+self.get_machine_info()+"crm 获取数量接口出现异常 请及时进行处理,时间为%s" %(file_date),"crm接口报警") def monitor_file_is_empty_or_not(self,path,mailist): try: filelist = os.listdir(path) count = 0 file_date = time.strftime("%Y%m%d %H:%M:%S", time.localtime(time.time()-86400)) empty_count = 0 alert = False now_date = time.strftime("%Y_%m_%d", time.localtime(time.time())) print now_date for item in filelist: if str(now_date) in item: count = count + 1 if int(os.path.getsize(item)) == 0: alert = True empty_count = empty_count + 1 if alert: print count,empty_count sendmail(maillist,"机器 "+self.get_machine_info()+" crm ftp中的文件出现空文件异常,总文件个数为:%d空文件个数为:%d 请及时进行处理,时间为%s" %(count,empty_count,file_date),"crm空文件报警") except Exception,e: print "failure!" traceback.print_exc(e) if __name__ == "__main__":dm = monitor() maillist = "lingmain.lin@xxx.cn;18513832042@139.com" dm.monitor_file_is_empty_or_not('/home/ftpuser',maillist) dm.disk_monitor(maillist,70) dm.inode_monitor(maillist,70)
0 0
- python 发邮件 脚本
- zabbix通过python脚本发告警邮件
- zabbix通过python脚本发告警邮件
- perl发邮件脚本
- 自动发邮件脚本
- linux python (smtplib + email)自动化发邮件脚本
- python 发邮件
- Python 发邮件
- python发邮件
- Python发邮件
- python发邮件实例
- python 发邮件
- 【python】发邮件
- 用Python发邮件
- Python发邮件代码
- python发邮件实例
- python发邮件
- python 发邮件实现
- kafka_0.10.1.0集群部署
- 设置手机存储及数据流量信号统一切换指令及接口
- 当今天各机关事业单位(包括中小学)收到文件通
- SSH框架实例学习1
- 神经网络浅讲:从神经元到深度学习
- python 发邮件 脚本
- Java 信号量 Semaphore 介绍
- ThreadPool 线程池 多线程 等待 回调函数 获取返回值
- Mp4视频源地址
- 一阶边缘检测算子总结
- spring基本用法总结二
- Intellij IDEA svn的使用记录
- Android 组件化开发 资料
- thinkphp5笔记