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. 【对线面试官】Java注解

    public void send(String userName) {  try {    // qps 上报    qps(params);    long startTime = System.c ...

  2. Office__自动保存和恢复

    #1.前言 在您埋头辛苦编辑Excel.Word或PPT文档的时候,如果突然发生断电.系统崩溃.意外误操作,本文将以Excel2010为例详细阐述其中自动保存功能的工作机理和恢复文件的访问方法,Exc ...

  3. 生成对抗网络(Generative Adversarial Networks, GAN)

      生成对抗网络(Generative Adversarial Networks, GAN)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的学习方法之一.   GAN 主要包括了两个部分,即 ...

  4. CentOS7下常用安装服务软件yum方式的介绍

    简介:介绍yum软件包的管理并配置本地yum源 yum安装:基于 C/S 架构,yum安装称之为傻瓜式安装 yum安装优点:方便快捷,不用考虑包依赖,自动下载软件包. yum安装缺点:人为无法干预,无 ...

  5. 安装Yii2框架

    一.Windows安装Yii2 1.安装Composer Composer 需要 PHP 5.3.2+ 以上版本,且需要开启 openssl,打开 php 目录下的 php.ini,将 extensi ...

  6. Springboot 源码解析-自定装配

    面试官经常会问你知道springboot的自定装配吗?它是怎么实现的吗?今天我们就来通过源码一起分析下它吧.首先我们先搭建一个springboot的简单项目,找到启动类, 然后通过这个注解我们进入到@ ...

  7. Redis在存取序列化和反序列化性能问题

    1. 问题场景 我们在使用Redis的时候经常会将对象序列化存储到Redis中,在取出的时候进行反序列化,如果对象过大在进行序列化和反序列化的时候会有一定性能问题.今天查看了CSRedis源码发现在S ...

  8. 在 ASP.NET Core和Worker Service中使用Quartz.Net

    现在有了一个官方包Quartz.Extensions.Hosting实现使用Quartz.Net运行后台任务,所以把Quartz.Net添加到ASP.NET Core或Worker Service要简 ...

  9. 使用 SOS 对 Linux 中运行的 .NET Core 进行问题诊断

    目录 说明 准备一个方便的学习环境 2.x 配置内容 3.x 配置内容 工具介绍 lldb sos plugin 1. attach 到进程上进行调试 2. 分析core dump文件 SOS 案例分 ...

  10. linux系统操作系统网卡漂移解决方案及问题原因

    一.问题描述 公司有100-150台服务器安装RHEL7.4&中标麒麟7.4系统,为方便编辑配置网卡,使用脚本方式配置为biosname=0,ifname=0,目的是为将en1o2p此类长字符 ...