#!/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报警模块的更多相关文章

  1. smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed')解决办法

    raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'Error: authentica ...

  2. python smtplib email

    监控系统需要触发报警邮件, 简单笔记一下的用到的库. smtplib class smtplib.SMTP([host[, port[, local_hostname[, timeout]]]]) 返 ...

  3. python smtplib发送邮件遇到的认证问题

    python的smtplib模块主要是用来发送邮件的,使用起来比较方便. 使用程序发送邮件只需要写以下几行代码就OK了: #!/usr/bin/env python import smtplib s ...

  4. SNMPv3/pygal制图/smtplib发邮件

    SNMPv3 SNMPv3在路由器端的配置 这个我都没配置过,还得现学现卖这个链接说的是SNMPv3的基本配置 这个链接说的是SNMPv3的view命令,用于管理员可以看到哪些层级的内容 1) 配置 ...

  5. smtplib.SMTPDataError: (554, 'DT:SPM 126 smtp5错误解决办法

    1.自动化测试中,调用邮件模块自动发送邮件时,运行脚本报错: smtplib.SMTPDataError: (554, 'DT:SPM 126 smtp5,jtKowAD3MJz2c1JXLcK2AA ...

  6. Pyqt Smtplib实现Qthread多线程发送邮件

    一. smtplib 的介绍 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])   SMTP类构造函数,表示与SMTP服务器之间的连接 ...

  7. python ftplib,smtplib,poplib学习

    一.ftplib from ftplib import FTP ftpobj = FTP(IP或域名)     #实例化对象 ftpobj.login('username','passwd')  ## ...

  8. Python_使用smtplib和email模块发送邮件

    [http://blog.csdn.net/menglei8625/article/details/7721746] SMTP (Simple Mail Transfer Protocol) 邮件传送 ...

  9. Python用smtplib发送邮件

    参照了下面: 1. 先随便照着试试这个: http://blog.csdn.net/zhaoweikid/article/details/1638349 2. 这个写了一个很简洁的代码,看过NO.1就 ...

随机推荐

  1. VB.net版机房收费系统——结账功能实现(调错与优化)

    调错部分 上一篇博客<VB.net版机房收费系统--结账功能实现(代码部分>说的是结账功能的实现,亮出了代码.是在为这篇博客做铺垫.尽管结账功能代码是借鉴的巨人的博客.可是自己比着葫芦画瓢 ...

  2. Eureka vs Zookeeper

    著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡.在此Zookeeper保证 ...

  3. filter、servlet、interceptor的执行顺序

    1. Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链.它与Servlet的区别在于:它不能 ...

  4. HTML 客户端存储

    在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前, ...

  5. CWnd中PreCreateWindow、PreSubclassWindow、SubclassWindow

    原文链接:http://blog.chinaunix.net/uid-14607221-id-2794642.html 1. PreCreateWindow: Called by the framew ...

  6. swing_AbstractTableModel 创建表格

    import javax.swing.table.AbstractTableModel; public class MyTable extends AbstractTableModel { /** * ...

  7. Http常用状态码及含义

    HTTP 400 – 请求无效 HTTP 404- 无法找到文件或目录 HTTP 500 – 内部服务器错误 HTTP 502 – 网关错误 HTTP 400 – 请求无效 HTTP 401.1 – ...

  8. js中return的作用

    1.终止函数的继续运行. 当遇到if…… else是.若出现return,就会出现终止运行,不会继续做出判断 <html> <head> <title>return ...

  9. Linux时间子系统之(一):时间的基本概念【转】

    本文转载自:http://www.wowotech.net/timer_subsystem/time_concept.html 本文使用Q & A的方式来和大家以前探讨一下时间的基本概念 一. ...

  10. code::Blocks 汉化经验

    首先,在网上下载一个code::Block的汉化包 code::Block汉化包下载地址,复制到地址栏即可.  http://files.cnblogs.com/files/QW-lzm/codebl ...