监控系统内存,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. pandas(三)

    合并数据集: 创建一个能创建dataframe的函数 def make_data(cols,ind): data={c:[strc(c)+str(i) for i in ind] for c in c ...

  2. Java学习--抽象类和接口

    https://www.cnblogs.com/dolphin0520/p/3811437.html 抽象类 先了解一下[抽象方法]—一种特殊的方法,只有声明,没有具体的实现  abstract vo ...

  3. netcorec程序部署配置

    IIS方式: 1:iis配置netcore发布的文件 2:iis设置运行库无托管模式 3:安装DotNetCore.1.0.4_1.1.1-WindowsHosting.exe 4:安装dotnet- ...

  4. webpack(5) -开发环境

    使用 source map (仅用于开发环境) 当 webpack 打包源代码时,可能会很难追踪到 error(错误) 和 warning(警告) 在源代码中的原始位置.例如,如果将三个源文件(a.j ...

  5. OO第二次博客

    过去三周里,我们完成了多线程电梯的程序设计与构造.这是我第一次接触多线程编程.我感觉最大的困难在于多个线程中的操作,谁先谁后,不是像以前写的单线程程序那样严格确定,所以心里常常会比较慌.尤其是因为多线 ...

  6. 2#第一个Java程序

    好,我们来写一个最简单的Java程序: public class HelloWorld{ public static void main(String[] argc){ System.out.prin ...

  7. Kafka笔记4(消费者)

    消费者和消费群组: Kafka消费者从属于消费者群组,一个群组里的消费者订阅的是同一个主题,每个消费者接收主题的一部分分区消息 消费者的数量不要超过主题分区的数量,多余的消费者只会被闲置 一个主题可以 ...

  8. 大部分教程不会告诉你的 12 个 JS 技巧

    from:https://www.infoq.cn/article/eSYzcMZK4PkOzZC_68fv 在这篇文章中,作者将分享 12 个非常有用的 JavaScript 技巧,可以帮助你写出简 ...

  9. vue进阶--外卖商家页

    一.准备工作 1.vue特性:轻量级.简洁.高效.组件化.数据驱动 2.技术分析:使用vue- resource与后端交互(ajax通信,ie9+)  使用vue-router作为前端路由   bet ...

  10. CentOS 7 安装Redis4.0

    redis是一种内存型的NoSQL数据库,优点是快,常用来做缓存用 redis存储数据的方法是以key-value的形式 value类型支持字符串,列表,哈希等多种类型 环境 : CnetOS7    ...