zoukankan      html  css  js  c++  java
  • python监控CPU/内存/磁盘,超过指定百分比,发送邮件

    #!/usr/bin/python
    #coding:utf-8
    
    #导入psutil模块
    import psutil
    import yagmail
    
    def mail(subject,contents):      #形参为邮件的标题和内容
        yag = yagmail.SMTP(user='zhangweihappy8@163.com', password='xxx', host='smtp.163.com')  #passwd为授权的密码不是登陆密码
        #发送邮件
        yag.send(to='zui_city_zhang@163.com',subject=subject, contents=contents)
        #断开连接
        yag.close()
      
    
    
    def cpu_info():
        cpu = psutil.cpu_percent(1)
        return cpu
    res=cpu_info()
    
    def mem_info():
        mem = psutil.virtual_memory()
        info1={'mem_total':mem[0],'mem_free':mem[1],'mem_percent':mem[2],'mem_used':mem[3]}
        return info1
    res2=mem_info()
    
    def disk_info():
        disk = psutil.disk_usage('/')
        info2 = {'total': disk[0], 'used': disk[1], 'free': disk[2], 'percent': disk[3]}   #同样写入一个字典
        return info2
    res3=disk_info()
    
    def main():
        m_cpu = res
        m_mem = res2
        m_disk = res3    #将各个分函数的调用结果当作函数体输入
        msg='''          
        cpu使用率%s
        内存总量%sM      
        内存剩余%sM
        内存使用率%s
        内存使用量%sM
        磁盘总量%sGB
        磁盘使用量%sGB
        磁盘剩余量%sGB
        磁盘使用率%s%%
        '''%(m_cpu,int(m_mem.get('mem_total')/1024/1024),int(m_mem['mem_free']/1024/1024),m_mem['mem_percent'],int(m_mem['mem_used']/1024/1024),int(m_disk['total']/1024/1024/1024),int(m_disk['used']/1024/1024/1024),int(m_disk['free']/1024/1024/1024),m_disk['percent']) 
        print(msg)
        if m_cpu >50:
            mail('cpu报警',msg)
        else:
            print('cpu正常')
        if m_mem['mem_percent'] > 50:
            mail('内存占用过半',msg)
        else:
            print('relax')
        if m_disk['percent'] > 50:
            mail('磁盘快炸了',msg)
        else:
            print('磁盘正常')
    
    if __name__=='__main__':
        main()
  • 相关阅读:
    Linux Shell 重定向输入和输出
    NDK Cmake
    测试
    20行Python代码爬取王者荣耀全英雄皮肤
    SSH开发模式——Struts2(第一小节)
    JavaWeb开发——软件国际化(动态元素国际化)
    JavaWeb开发——软件国际化(文本元素国际化)
    DBUtils框架的使用(下)
    DBUtils框架的使用(上)
    SSH开发模式——Struts2(第二小节)
  • 原文地址:https://www.cnblogs.com/hello-wei/p/11671506.html
Copyright © 2011-2022 走看看