zoukankan      html  css  js  c++  java
  • 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 = "
    ".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和符合条件的行合成一个列表。然后用" ".join(),以换行符为分隔符转为字符串,目的是发送邮件。

    判断列表的长度,大于1表示有ip以外的元素,启用邮件发送操作。

    调用smtplib模块,登录网易的SMTP_SSL接口,发送邮件。

  • 相关阅读:
    Day20:Decorator and Metaclass
    Day19:hasattribute;getattribute;seattributet;delattribute
    Day18:polymorphic and reflection
    Day17:call the base class
    ACL权限
    内置函数
    用户配置文件-影子文件
    用户配置文件-用户信息文件
    脚本安装包
    定义函数
  • 原文地址:https://www.cnblogs.com/jabbok/p/9014322.html
Copyright © 2011-2022 走看看