Python系统监控脚本
1import psutil #载入psutil模块 2import smtplib #载入smtplib模块
3from email.mime.text import MIMEText
4from email.header import Header
5
6def cpu_info(): #定义CPU使用率函数
7 cpu = '%.2f%%'% psutil.cpu_percent(1) #截取1秒内cpu的使用率。
8return cpu
9# %.2f表示输出浮点数并保留两位小数。%%表示直接输出一个%。
10def mem_info(): #定义内存使用率
11 mem = psutil.virtual_memory()
12 mem_per ='%.2f%%'% mem[2]
13 mem_total = str(int(mem[0]/1024/1024)) + 'M'
14 mem_used = str(int(mem[3]/1024/1024)) + 'M'
15 info = {
16'mem_per':mem_per,
17'mem_total':mem_total,
18'mem_used':mem_used
19 } #建立字典,方便后边调用值
20return info
21def disk_info():
22 c = psutil.disk_usage('c:')
23 d = psutil.disk_usage('d:')
24 e = psutil.disk_usage('e:')
25 f = psutil.disk_usage('f:')
26 c_per = '%.2f%%'% c[3]
27 d_per = '%.2f%%'% d[3]
28 e_per = '%.2f%%'% e[3]
29 f_per = '%.2f%%'% f[3]
30 info = {
31'c_per': c_per,
32'd_per': d_per,
33'e_per': e_per,
34'f_per': f_per,
35 }
36return info
37
38def network_info():
39 network = psutil.net_io_counters()
40 network_sent = str(int(network[0]/1024)) + 'Kb'
41 network_recv = str(int(network[1]/1024)) + 'Kb'
42 info = {
43'network_sent':network_sent,
44'network_recv':network_recv
45 }
46return info
47
48
49def send_mail(message): #定义发邮件函数
50 a = ['1351841****@163.com','1731017****@163.com','1731023****@163.com'] #定义一个列表a为接收方
51 sender = '132079****@qq.com'#发送方
52for i in a:
53 receiver = i
54 subject = '报警'
55 username = '132079****@qq.com'#发送方使用的账户名
56 password = 'ziisvyxvzbeg****'#发送方的授权码密码
57 msg = MIMEText(message, 'plain', 'utf-8')
58 msg['Subject'] = Header(subject, 'utf-8')
59 msg['From'] = sender
60 msg['To'] = receiver
61 smtp = smtplib.SMTP()
62 smtp.connect('smtp.qq.com') #邮件服务器
63 smtp.login(username, password)
64 smtp.sendmail(sender, receiver, msg.as_string())
65 smtp.quit()
66#接收方只有一个用户时,网易、QQ都好使;接收方为多用户时,QQ好使
67
68def main(): #主函数
69 cpu = cpu_info()
70 mem = mem_info()
71 disk = disk_info()
72 network = network_info()
73 info = '''
74 CPU使用率:%s
75 =============
76 内存使用率:%s
77 总内存:%s
78 已使用内存:%s
79 =============
80 C盘使用率:%s
81 D盘使用率:%s
82 E盘使用率:%s
83 F盘使用率:%s
84 =============
85 网卡发送流量:%s
86 网卡接收流量:%s
87
88''' % (cpu,mem.get('mem_per'),mem.get('mem_total'),mem.get('mem_used'),disk.get('c_per'),disk.get('d_per'),disk.get('e_per'),disk.get('f_per'),network.get('network_sent'),network.get('network_resv'))
89
90if int(cpu[:-4]) > 80 or int(mem.get('mem_per')[:-4]) > 60:
91 send_mail(info) #根据需求进行阈值设置
92# print(msg)
93else:
94print('电脑运行良好,没有到阈值')
95
96if__name__ == '__main__':
97 main()
98#当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行
99
以上是 Python系统监控脚本 的全部内容, 来源链接: utcz.com/z/509941.html