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