监控系统内存,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[]/**)
available_meom=int(meom[]/**)
used_meom=int(meom[]/**)
percent_meom=meom[]
meomdict={
'total':total_meom,
'available':available_meom,
'used':used_meom,
'percent':percent_meom
}
return meomdict #cpu
def cpu_check():
cpu = psutil.cpu_percent()
return cpu #硬盘
def disk_check(n): #可以选择监控电脑哪个磁盘,调用的时候传参即可
disk = psutil.disk_usage(r'%s:'% n)
total_disk=int(disk[]/**)
used_disk=int(disk[]/**)
free_disk=int(disk[]/**)
percent_disk=disk[]
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 > :
msg = '''
电脑快要爆炸了!请立刻丢掉电脑紧急避险!
cpu利用率:%s%%
''' % cpu
sendmail('CPU过高!',msg) if meom['percent'] >:
msg = '''
内存过高!都快卡成PPT了,请尽快处理!
内存总大小:%sM
内存剩余大小:%sM
内存使用大小:%sM
内存使用率:%s%%
''' % (meom.get('total'), meom.get('free'), meom.get('used'), meom.get('percent'))
sendmail('内存过高!', msg) if disk_c['percent'] >:
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'] >:
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'] > :
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()

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

python程序—系统检测的更多相关文章

  1. 如何在Windows系统中设置Python程序定时运行

    文章出处:http://blog.csdn.net/wwy11/article/details/51100432 首先,我们肯定是要用到Windows下的[计划任务]功能 之后点击右侧的[创建基本任务 ...

  2. Windows系统中设置Python程序定时运行方法

    Windows系统中设置Python程序定时运行方法 一.环境 win7 + Python3.6 二.步骤 1,在Windows开始菜单中搜索“计划任务”,并且点击打开“计划任务”: 2.点击“创建基 ...

  3. 将Python 程序打包成 .exe格式入门

    PyInstaller PyInstaller 是一个十分有用的第三方库,可以用来打包 python 应用程序,打包完的程序就可以在没有安装 Python 解释器的机器上运行了. 它能够在 Windo ...

  4. 在Python程序中的进程操作,multiprocess.Process模块

    在python程序中的进程操作 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起 ...

  5. 月薪3万的python程序员都看了这本书

    想必大家都看过吧 Python编程从入门到实践 全书共有20章,书中的简介如下: 本书旨在让你尽快学会 Python ,以便能够编写能正确运行的程序 —— 游戏.数据可视化和 Web 应用程序,同时掌 ...

  6. python 全栈开发,Day38(在python程序中的进程操作,multiprocess.Process模块)

    昨日内容回顾 操作系统纸带打孔计算机批处理 —— 磁带 联机 脱机多道操作系统 —— 极大的提高了CPU的利用率 在计算机中 可以有超过一个进程 进程遇到IO的时候 切换给另外的进程使用CPU 数据隔 ...

  7. 用XYNTService把Python程序变为服务

    1. XYNTService的使用 1.1. 介绍 1.2. XYNTService 2. 用XYNTService把Python程序变为服务 1. XYNTService的使用 1.1. 介绍 通常 ...

  8. 将 Python 程序打包成 .exe 文件

    1.简介 做了一个excel的风控模板,里面含有宏,我用python的第三方xlwings部署到linux后发现,linux环境并不支持xlwings. Python 程序都是脚本的方式,一般是在解析 ...

  9. Python程序中的进程操作--—--开启多进程

    Python程序中的进程操作-----开启多进程 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创 ...

随机推荐

  1. L1-039. 古风排版

    L1-039. 古风排版 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数.第二行给出一 ...

  2. opencart3产品页调用upc/数量等信息

    opencart3产品页默认只调用标题.价格.型号等几个数据,如果想要调用更多的参数要如何操作呢?跟着ytkah一起来看看吧.首先打开/catalog/model/catalog/product.ph ...

  3. Postman接口自动化测试实例二

    在<Postman接口自动化测试实例>一文中,我是在获取随机因子的接口的Tests中对用户的密码进行加密处理的.其实正常做法应该是在请求验证接口前,即在Pre-request Script ...

  4. Google word/sheets 常见的使用:

    Google Sheets: 1, sheets 里面的单元格设置自动换行: 选中单元格: --> Format --> Text Wrapping --> Wrap(自动换行)/C ...

  5. 让我怀疑人生的bug集合

    bug1:一个人人都知道全局变量易污染,但是我就是污染不了的问题 解决:刚开始动用了session来存这个值,后来觉得太小题大做了,最后使用了闭包来解决,第一个function结束后开启第二个,起初没 ...

  6. kendo upload必填验证

    @using Kendo.Mvc.UI @using StudentManage.Common.Helper @model StudentManage.Models.Home.ImportDataFr ...

  7. linux下如何查看某软件是否已安装

      因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了.总结起来就是这样几类: 1.rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm - ...

  8. Windows上IOCP Socket事件模型管理

     1.IOCP 2.使用IOCP 1)创建完成端口CreateIoCompletionPort: 2)向完成端口添加管理句柄与管理用户数据: 3)异步发送一个管理的事件请求: 4)开启工作线程来处理I ...

  9. CentOS7中PPTP的配置

    最近做各种vpn,记录一下pptp的流程 1.准备 #yum install -y perl ppp iptables //centos默认安装了iptables和ppp   2.安装pptpd #y ...

  10. Cannot locate BeanDefinitionParser for element [scoped-proxy]

    指定使用 CGLIB 而不使用 JDK 生成代理对象:注意:此两个标签必须同时出现,不然会报:Cannot locate BeanDefinitionParser for element [scope ...