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()

python系统监控及邮件发送的更多相关文章

  1. Python 原生2种 邮件发送(发送验证码) 的方法

    import smtplib from email.mime.text import MIMEText # 第三方 SMTP 服务 mail_host = "smtp.sina.cn&quo ...

  2. python定时利用QQ邮件发送天气预报

    大致介绍 好久没有写博客了,正好今天有时间把前几天写的利用python定时发送QQ邮件记录一下 1.首先利用request库去请求数据,天气预报使用的是和风天气的API(www.heweather.c ...

  3. python初级实战-----关于邮件发送问题

    python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件. sm ...

  4. Python编写的Linux邮件发送工具

    之前有用过Linux自带的mail工具来定时发送邮件,但是要装mailx还有配mail.rc,这还比较正常,关键是到了ubantu下这工具用起来真是操蛋,如果哪天其他的unix like操作系统也有需 ...

  5. Python应用-完成简单邮件发送功能

    项目中有时候需要用脚本来自动发送邮件,而用Python来发送邮件十分的方便,代码如下: #!/usr/bin/python #coding:utf-8 import smtplib from emai ...

  6. python url监控 并邮件报警

    import timeimport requestsimport smtplibfrom email.mime.text import MIMETextimport datetime def Send ...

  7. 使用shell+python脚本实现系统监控并发送邮件

    1.编辑shell脚本 [root@web03 ~/monitor_scripts]# cat inspect.sh #!/bin/bash # 设置磁盘的阀值 disk_max=90 # 设置监控i ...

  8. Grafana+Prometheus系统监控之webhook

    概述 Webhook是一个API概念,并且变得越来越流行.我们能用事件描述的事物越多,webhook的作用范围也就越大.Webhook作为一个轻量的事件处理应用,正变得越来越有用. 准确的说webho ...

  9. 【Linux】结合Python 简易实现监控公司网站,邮件发送异常

    背景 由于一些原因,博主负责测试的网站的服务器切换到了香港,切换后出现了多次访问超时的情况 于是主动请缨写一个自动监测的脚本,本来准备完全使用shell来写,后来发现shell发送邮件只能在测试机之间 ...

随机推荐

  1. 详解Python Google Protocol Buffer

    为什么要使用PB? PB(Protocol Buffer)是 Google 开发的用于结构化数据交换格式,作为腾讯云日志服务标准写入格式.因此用于写入日志数据前,需要将日志原始数据序列化为 PB 数据 ...

  2. HCIP --- BGP属性

    传播范围                 默认值              大优或小优 1. Preference_Value     不传播                      0       ...

  3. WPF应用程序管理

    WPF应用程序管理(更多资源:http://cleopard.download.csdn.net/) 一.WPF应用程序由System.Windows.Application类进行管理 二.创建WPF ...

  4. [UWP] - 用Json格式来发送一个Post请求到WCF服务

    测试实体类:(需要在客户端和服务端建了有相同字段名称的实体) public class CompositeType { public CompositeType() { SubCompositeTyp ...

  5. 【代码周边】-GitHub笔记

    ------------恢复内容开始------------ 程序员的宝库github是个好东西,其中开源的项目足够我们的使用,但是如何去精准的获取我们的项目是很多初学者的问题.特别是英语不好的我,一 ...

  6. JavaSwing 船只停靠管理可视化(五)

    JavaSwing 船只停靠管理可视化(一) JavaSwing 船只停靠管理可视化(二) JavaSwing 船只停靠管理可视化(三) JavaSwing 船只停靠管理可视化(四) JavaSwin ...

  7. TurtleBot3 Waffle (tx2版华夫)(3)opencr系统安装

    3. 1. 安装 Arduino IDE Opencr的安装环境的安装包,双击打开即可.进入安装的过程. 在这里你可以选择自己的安装位置. 安装已经完成,点击CLOSE 即可. 3.2. opencr ...

  8. 安装Apache2.4 操作系统:Centos7.4

    正式安装Apache2.4 操作系统:Centos7.4,(需要关闭Selinux)1.在每安装一个服务都要养成查看是否安装,如果安装则需要卸载: #[root@yankerp ~]# rpm -qa ...

  9. 使用 squid 共享 虚拟专用网至局域网

    最近要出差,但是公司代码放在内网环境,平时在公司使用没问题,如果不在公司,就要拨 虚拟网络以下简称:V网. 但是公司给的 V网,并不是那种,直接用系统自带的网络连接,就可以连接上的,需要装一个软件,登 ...

  10. fastjson复现项目代码

    详情请见:https://www.cnblogs.com/yunmuq/p/14268028.html 以下是代码 // FastjsonDemo.java package test; import ...