• 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接口,发送邮件。

  • 相关阅读:
    【QT】Linux下安装QT开发环境
    【C#】Winform嵌入dll到exe中
    使用maven插件构建docker镜像并推送到阿里镜像仓库
    蓝牙耳机连接 win10音量异常
    max virtual memory areas vm.max_map_count [65530] is too low
    docker 安装 confluence
    jenkins docker push脚本
    docker 删除指定名称的所有容器
    docker 安装 xxl-job-admin
    docker 安装 sentinel
  • 原文地址:https://www.cnblogs.com/jabbok/p/9014322.html
Copyright © 2020-2023  润新知