python系统监控_使用Python创建一个系统监控程序

psutil

(进程和系统实用程序)是一个跨平台的库,用于检索

Python

中有关正在运行的进程和系统利用率(

CPU

,内存,磁盘,网络,传感器)的信息。它主要用于系统监视,概要分析和限制进程资源以及管理正在运行的进程。

1

、安装

psutil

pip3 install psutil    # python2

用户直接使用

pip install psutil

2

、创建

get_system_info.py

文件,获取系统状态

1 import psutil as p

2

3

4 def memory(): #

获取内存信息

5     info = p.virtual_memory()

6     return info[2]

7

8

9 def disk(): #

获取磁盘使用情况

10     info = p.disk_usage('/')

11     return info[-1], info[-2]

12

13

14 def cpu(): #

获取

CPU

使用率

15     info = p.cpu_percent(1)

16     return info

#

在此只使用了博主所需的相关功能,详细说明见

https://pypi.org/project/psutil/

3

、创建邮件发送

send_Email.py

文件

1 import smtplib

2 from email.header import Header

3 from email.mime.text import MIMEText

4 from email.utils import formataddr

5

6

7 class send_Email():

8     def __init__(self, mail_host, mail_port, mail_user, mail_pass, sender):

9         self.mail_host = mail_host

10         self.mail_port = mail_port

11         self.mail_user = mail_user

12         self.mail_pass = mail_pass

13         self.sender = sender

14

15     def make_mail(self, title, code, receiver): #

生成邮件

16         mail_msg = """

17         

%s

18         

%s

19         """ % (title, code)

20         self.message = MIMEText(mail_msg, "html", "utf-8")

21         self.message['From'] = formataddr(["XX", self.sender])

22         self.message['To'] = formataddr(["User", receiver])

23         subject = title

24         self.message['Subject'] = Header(subject, "utf-8")

25

26     def send(self, receiver, title, code): #

发送邮件

27         status = 0

28         self.make_mail(title, code, receiver)

29         try:

30             self.smtpObj = smtplib.SMTP_SSL(self.mail_host, self.mail_port)

31             # print(1)

32             self.smtpObj.login(self.mail_user, self.mail_pass)

33             # print(2)

34             self.smtpObj.sendmail(self.sender, [receiver], self.message.as_string())

35             self.smtpObj.quit()

36             status = 1

37         except smtplib.SMTPException as e:

38             print("Error

! 无法发送邮件!!!

" + e)

39         return status

4

、整合代码

from send_Email import send_Email

import get_system_info as gsi

email = send_Email("smtp.163.com", 465, "*******@***.com", "**********", "********@***.com") #

初始化

memory = gsi.memory()

disk, capacity = gsi.disk()

info = str(memory)+"     "+str(disk)+"     "+str(round(capacity/1024/1024/1024, 2))

email.send(code=info, title="

系统状态异常

", receiver="*******@***.***")

status_d = 0

status_m = 0

while True: #

实时检测系统状态,会占用一定的系统资源

memory = gsi.memory()

disk, capacity = gsi.disk()

if memory >= 80 and status_m == 0:

status_m = 1

data = "

当前内存占用率为

"+str(memory)+"%

,建议清理或扩充内存!

"

email.send(code=data, title="

系统状态异常

", receiver="*******@***.***")

elif memory < 80:

status_m = 0

if disk >= 80 and status_d == 0:

status_d = 1

data = "

当前硬盘已使用

"+str(disk)+"%

,剩余

"+str(round(capacity/1024/1024/1024, 2))+"GB

,请及时扩充!

"

if disk >=货币符号https://www.gendan5.com/currencyworld.html

email.send(receiver="*******@***.***", title="

系统状态异常

", code=data)

elif disk < 80:

status_d = 0

if memory >= 90 and status_m == 1:

status_m = 2

data = "

当前内存占用率为

"+str(memory)+"%

,建议清理或扩充内存!

"

email.send(code=data, title="

系统状态异常

", receiver="*******@***.***")

elif memory < 90:

status_m = 1

if disk >= 90 and status_d == 1:

status_d = 2

data = "

当前硬盘已使用

"+str(disk)+"%

,剩余

"+str(round(capacity/1024/1024/1024, 2))+"GB

,请及时扩充!

"

email.send(receiver="*******@***.***", title="

系统状态异常

", code=data)

elif disk < 90:

status_d = 1

程序仍有不足之处,请大佬多多指教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值