zoukankan      html  css  js  c++  java
  • python程序—系统检测

         监控系统内存,CPU,硬盘的使用情况,到达阈值时会自动发送邮件报警!

    import yagmail
    import psutil
    
    def sendmail(subject,contents):
        #连接邮箱服务器
        yag = yagmail.SMTP(user='xxxxxxxxxxx',password='xxxxxx',host='smtp.163.com')
        # yag = yagmail.SMTP(user='发件人邮箱',password='授权登录密码',host='smtp.163.com')
        #发送邮件
        yag.send(to='xxxxxxxxxxxx',subject=subject, contents=contents)
        # yag.send(to='收件人邮箱',subject=主题, contents=内容)
        #断开连接
        yag.close()
    
    
    #内存
    def meomory_check():
        meom= psutil.virtual_memory()
        total_meom=int(meom[0]/1024**2)
        available_meom=int(meom[1]/1024**2)
        used_meom=int(meom[3]/1024**2)
        percent_meom=meom[2]
        meomdict={
            'total':total_meom,
            'available':available_meom,
            'used':used_meom,
            'percent':percent_meom
        }
        return meomdict
    
    #cpu
    def cpu_check():
        cpu = psutil.cpu_percent(1)
        return cpu
    
    #硬盘
    def disk_check(n): #可以选择监控电脑哪个磁盘,调用的时候传参即可
        disk = psutil.disk_usage(r'%s:'% n)
        total_disk=int(disk[0]/1024**3)
        used_disk=int(disk[1]/1024**3)
        free_disk=int(disk[2]/1024**3)
        percent_disk=disk[3]
        diskdict={
            'total':total_disk,
            'used' :used_disk,
            'free':free_disk,
            'percent':percent_disk
        }
        return  diskdict
    
    def main():
        meom=meomory_check()
        cpu=cpu_check()
        disk_c=disk_check('c')#监控C盘,传的参数必须是字符形式,例如:'c'
        disk_d=disk_check('d')
        disk_e=disk_check('e')
    
        if cpu > 70:
            msg = '''
            电脑快要爆炸了!请立刻丢掉电脑紧急避险!
            cpu利用率:%s%%
            ''' % cpu
            sendmail('CPU过高!',msg)
    
        if meom['percent'] >80:
            msg = '''
            内存过高!都快卡成PPT了,请尽快处理!
            内存总大小:%sM
            内存剩余大小:%sM
            内存使用大小:%sM
            内存使用率:%s%%
            ''' % (meom.get('total'), meom.get('free'), meom.get('used'), meom.get('percent'))
            sendmail('内存过高!', msg)
    
        if disk_c['percent'] >80:
            msg = '''
            硬盘c内存严重不足!请尽快整理!清除无用文件!
            硬盘c总大小:%sM
            硬盘c剩余大小:%sM
            硬盘c使用大小:%sM
            硬盘c使用率:%s%%
            ''' % (disk_c.get('total'),disk_c.get('used'), disk_c.get('free'), disk_c.get('percent'))
            sendmail('硬盘c内存严重不足!', msg)
    
        if disk_d['percent'] >80:
            msg = '''
            硬盘d内存严重不足!请尽快整理!清除无用文件!
            硬盘d总大小:%sM
            硬盘d剩余大小:%sM
            硬盘d使用大小:%sM
            硬盘d使用率:%s%%
            ''' % (disk_d.get('total'),disk_d.get('used'), disk_d.get('free'), disk_d.get('percent'))
            sendmail('硬盘d内存严重不足!', msg)
    
    
        if disk_e['percent'] > 80:
            msg = '''
              硬盘e内存严重不足!请尽快整理!清除无用文件!
              硬盘e总大小:%sM
              硬盘e剩余大小:%sM
              硬盘e使用大小:%sM
              硬盘e使用率:%s%%
              ''' % (disk_e.get('total'), disk_e.get('used'), disk_e.get('free'), disk_e.get('percent'))
            sendmail('硬盘e内存严重不足!', msg)
    
    if __name__ == '__main__':
        main()

        如果想要做到持续监控,只需要做一个计划任务,定时运行脚本即可!

  • 相关阅读:
    Asp.net_解决vs运行报在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题的bug方法
    WebConfig常用节点
    编译器错误消息:必须添加对程序集“System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用
    使用Log4net调试NHibernate
    Visual Studio 2012 如何打开MVC1.0 MVC2.0的项目
    MVC中IQueryable与IList的区别?
    vs2010 打开 vs2012 的解决方案
    LINQ分页和排序,skip和Take 用法
    未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
    在Sql server数据库中,关于触发器的创建、调用及删除
  • 原文地址:https://www.cnblogs.com/leeeel/p/10758148.html
Copyright © 2011-2022 走看看