zoukankan      html  css  js  c++  java
  • python系统监控及邮件发送

                                      python系统监控及邮件发送

     
    #psutil模块是一个跨平台库,能轻松实现获取系统运行的进程和系统利用率
     
    import psutil                                    #先导入psutil模块
     res = psutil.cpu_percent(1)              #1s内cpu的使用率
     print(res)
     
     res1 = psutil.cpu_percent(1,True)    #每一秒cpu的占用率
     print(res1)
     
     res2 = psutil.virtual_memory()          #内存使用率
     print(res2)
     print( '%.2f%%' %res2[2])              #以百分比形式打印第三位
     
     res4 = psutil.disk_usage('C:')            #硬盘分区的使用率
     print(res4)
     
     res5 = psutil.net_io_counters()       #查看网络流量
     print(res5)
     

    监控程序

    #导入模块(获取系统信息和邮件模块)
    import psutil        
    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header
     
    #cpu模块
    def cpu_info():
        cpu = '%.2f%%' %psutil.cpu_percent(1)    #把cpu的值改成百分比的形式
        return cpu
     
    #内存模块
    def mem_info():
        mem = psutil.virtual_memory()
        mem_per = '%.2f%%' %mem[2]                 #同上
        mem_total = str(int(mem[0]/1024/1024)) + 'M'   
        mem_used = str(int(mem[3]/1024/1024)) + 'M'
        info = {
            'mem_per' : mem_per,
            'mem_total' : mem_total,
            'mem_used' : mem_used
        }
        return info
     
    #磁盘分区模块
    def disk_info():
        c_per = '%.2f%%' %psutil.disk_usage('C:')[3]
        d_per = '%.2f%%' %psutil.disk_usage('D:')[3]
        info = {
            'c_per' : c_per,
            'd_per' : d_per
        }
        return info
     
    #网卡模块
    def network_info():
        network = psutil.net_io_counters()
        network_sent = str(int(network[0]/8/1024)) + 'kb'
        network_recv = str(int(network[1]/8/1024)) + 'kb'
        info = {
            'network_sent' : network_sent,
            'network_recv' : network_recv
        }
        return info
     
    #邮件发送模块
    def send_mail(message):
        sender = 'aa1052995312@163.com'    #发送的邮箱账号
        receiver = ['ruri9999@163.com']           #接收的邮箱账号
        subject = '报警'                                       #主题
        username = 'aa1052995312@163.com'   #发送的邮箱账号
        password = 'password'                              #发送的邮箱密码
        msg = MIMEText(message, 'plain', 'utf-8')    #(邮件正文,编码,编码)
        msg['Subject'] = Header(subject, 'utf-8')          #抬头为subject
        msg['From'] = 'TOP<aa1052995312@163.com>'  #TOP标题 后面是邮箱
        msg['To'] = "'ruri9999@163.com'"                        #接收的邮箱
        smtp = smtplib.SMTP()
        smtp.connect('smtp.163.com')                              #邮箱服务器
        smtp.login(username, password)
        smtp.sendmail(sender, receiver, msg.as_string())
        smtp.quit()
     
    #主函数
    def main():
        cpu = cpu_info()
        mem = mem_info()
        disk = disk_info()
        network = network_info()
        msg = '''
        cpu使用率:%s
        ==================
        内存占用率:%s
        内存总量:%s
        内存使用量:%s
        ===================
        C盘使用率:%s
        D盘使用率:%s
        ====================
        网卡发送量:%s
        网卡接收量:%s
        '''  % (cpu, mem.get('mem_per'), mem.get('mem_total'), mem.get('mem_used'), disk.get('c_per'), disk.get('d_per'), network.get('network_sent'), network.get('network_recv'))
        if int(cpu[:2]) > 80 or int(mem.get('mem_per')[:2]) > 80:   #报警发送条件
            send_mail(msg)
        else :
            print('没到阈值。')
    if __name__ == '__main__':
        main()
  • 相关阅读:
    jquery easy ui 学习 (8)basic treegrid
    jquery easy ui 学习 (7) TreeGrid Actions
    jquery easy ui 学习 (6) basic validatebox
    jquery easy ui 学习 (5) windowlayout
    jquery easy ui 学习 (4) window 打开之后 限制操纵后面元素属性
    提示“应用程序无法启动,因为应用程序的并行配置不正确”不能加载 System.Data.SQLite.dll
    visual studio 添加虚线的快捷键
    VS2010打开项目时,出现“已经在解决方案中打开了具有该名称的项目”问题的解决方案
    visual studio 编译时 出现 Files 的值 乱码
    微信 连接被意外关闭
  • 原文地址:https://www.cnblogs.com/heiguu/p/10011976.html
Copyright © 2011-2022 走看看