smtplib报警模块
#!/usr/bin/env python
# coding:utf-8
import time
import subprocess
import smtplib
from email.mime.text import MIMEText # ------------获取内存过载信息------------
cmd = "cd /data/scripts;rm -f mem.info;ps aux | sort -k6rn | head -20| awk '{print $2,$6/1024,$11}' > ./mem.info"
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
time.sleep(3)
meminfo = []
i = 0
with open('mem.info') as obj:
for line in obj.readlines():
line = line.split()
line[0] = int(line[0])
line[1] = float(line[1])
if line[1] > 1000:
memmsg = "pid:%d mem:%dMB" % (line[0], line[1])
meminfo.insert(i, memmsg)
i = i + 1 getip = subprocess.Popen('curl ifconfig.me',stdout=subprocess.PIPE,shell=True)
ip = getip.stdout.read().strip()
meminfo.insert(0, ip)
meminfo_str = "\n".join(meminfo) # -------------发送告警邮件---------------
len = len(meminfo)
if len > 1:
from_addr = 'xx@163.com'
passwd = '网易授权码'
to_addr = 'xx@xx.com'
smtphost = 'smtp.163.com' message = MIMEText(meminfo_str, 'plain', 'utf-8')
message['subject'] = 'memery warning'
message['from'] = from_addr
message['to'] = to_addr
server = smtplib.SMTP_SSL(smtphost, 465)
server.login(from_addr, passwd)
server.sendmail(from_addr, to_addr, message.as_string())
server.quit()
使用subprocess.Popen调用shell cmd,把结果输出到文件
把文件的每行数据读出来,然后用split方法转化为列表,根据内存值这个元素进行判断。
把ip和符合条件的行合成一个列表。然后用"\n".join(),以换行符为分隔符转为字符串,目的是发送邮件。
判断列表的长度,大于1表示有ip以外的元素,启用邮件发送操作。
调用smtplib模块,登录网易的SMTP_SSL接口,发送邮件。
smtplib报警模块的更多相关文章
- smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed')解决办法
raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'Error: authentica ...
- python smtplib email
监控系统需要触发报警邮件, 简单笔记一下的用到的库. smtplib class smtplib.SMTP([host[, port[, local_hostname[, timeout]]]]) 返 ...
- python smtplib发送邮件遇到的认证问题
python的smtplib模块主要是用来发送邮件的,使用起来比较方便. 使用程序发送邮件只需要写以下几行代码就OK了: #!/usr/bin/env python import smtplib s ...
- SNMPv3/pygal制图/smtplib发邮件
SNMPv3 SNMPv3在路由器端的配置 这个我都没配置过,还得现学现卖这个链接说的是SNMPv3的基本配置 这个链接说的是SNMPv3的view命令,用于管理员可以看到哪些层级的内容 1) 配置 ...
- smtplib.SMTPDataError: (554, 'DT:SPM 126 smtp5错误解决办法
1.自动化测试中,调用邮件模块自动发送邮件时,运行脚本报错: smtplib.SMTPDataError: (554, 'DT:SPM 126 smtp5,jtKowAD3MJz2c1JXLcK2AA ...
- Pyqt Smtplib实现Qthread多线程发送邮件
一. smtplib 的介绍 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]]) SMTP类构造函数,表示与SMTP服务器之间的连接 ...
- python ftplib,smtplib,poplib学习
一.ftplib from ftplib import FTP ftpobj = FTP(IP或域名) #实例化对象 ftpobj.login('username','passwd') ## ...
- Python_使用smtplib和email模块发送邮件
[http://blog.csdn.net/menglei8625/article/details/7721746] SMTP (Simple Mail Transfer Protocol) 邮件传送 ...
- Python用smtplib发送邮件
参照了下面: 1. 先随便照着试试这个: http://blog.csdn.net/zhaoweikid/article/details/1638349 2. 这个写了一个很简洁的代码,看过NO.1就 ...
随机推荐
- python的对象的属性(即对象的成员)是动态的
1 python的对象的成员叫attribute 2 python的类的成员是可以动态创建的 因此,在用的时候也提供了三个内建的接口来对类的成员进行操作 2.1 getattr() 2.2 hasat ...
- Mac OS安装Scrapy
个人觉得掌握简单的爬虫知识非常有用,特别是想要从一些特定网站自动地下载一些资源或者统计一些数据,非常的有用.对于产品经理来说,如果要了解竞争产品.替代产品的价格,可以写一个爬虫脚本从各大电商网站爬取相 ...
- 中国vs美国制造业公司营业额大排名,看看哪些属于美国制造业的优势产业(中美旗鼓相当,而且还有本土制造的优势)
当然,所谓的美国制造业,大量的东西现在 在中国制造和生产,但这里列举的,主要是卖实体工业产品为主的美国公司这个榜单里主要列出以工业产品销售为主的公司. 所以各大能源巨头虽然本身也是装备制造大户,但没被 ...
- Handler有何作用?怎样使用?
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012974916/article/details/24580405 一 Handler作用和概念 ...
- (29)java web的hibernate使用-crud的dao
1, 做个简单的util public class HibernateUtils { private static SessionFactory sf; static { //加载主要的配置文件 sf ...
- Fastreport生成WEB报表
开发WEB应用系统通常都会遇到报表打印问题.简单应用可利用IE的页面打印功能,利用HTML标签控制格式来实现.但复杂的业务型应用系统,报表不仅是组成应用的 重要部分,还常常是相当复杂的.现在很多应用系 ...
- spring mvc带参数重定向
http://blog.csdn.net/jackpk/article/details/19121777/ https://isudox.com/2017/02/16/spring-mvc-redir ...
- PHP的date 函数
<!DOCTYPE html> <html> <body> <?php echo "今天是 " . date("Y/m/d&qu ...
- SDUT oj 选拔赛1 迷之好奇
迷之好奇 Time Limit: 2000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 FF得到了一个有n个数字的集合.不要问我为什么,有钱,任性. FF很好奇 ...
- Oracle:impdb导入
最近有现场给我一份用expdp导出dmp文件,我用imp导入时,报错.因为导出dmp的数据库是11g,导入的数据库也是11g, 但客户端安装的是10g,不能用imp导入:所以只能试着用impdp导入: ...