监控系统内存,CPU,硬盘的使用情况,到达阈值时会自动发送邮件报警!
import yagmail import psutil def sendmail(subject,contents): #连接邮箱服务器 yag = yagmail.SMTP(user='xxxxxxxxxxx',password='xxxxxx',host='smtp.163.com') # yag = yagmail.SMTP(user='发件人邮箱',password='授权登录密码',host='smtp.163.com') #发送邮件 yag.send(to='xxxxxxxxxxxx',subject=subject, contents=contents) # yag.send(to='收件人邮箱',subject=主题, contents=内容) #断开连接 yag.close() #内存 def meomory_check(): meom= psutil.virtual_memory() total_meom=int(meom[0]/1024**2) available_meom=int(meom[1]/1024**2) used_meom=int(meom[3]/1024**2) percent_meom=meom[2] meomdict={ 'total':total_meom, 'available':available_meom, 'used':used_meom, 'percent':percent_meom } return meomdict #cpu def cpu_check(): cpu = psutil.cpu_percent(1) return cpu #硬盘 def disk_check(n): #可以选择监控电脑哪个磁盘,调用的时候传参即可 disk = psutil.disk_usage(r'%s:'% n) total_disk=int(disk[0]/1024**3) used_disk=int(disk[1]/1024**3) free_disk=int(disk[2]/1024**3) percent_disk=disk[3] diskdict={ 'total':total_disk, 'used' :used_disk, 'free':free_disk, 'percent':percent_disk } return diskdict def main(): meom=meomory_check() cpu=cpu_check() disk_c=disk_check('c')#监控C盘,传的参数必须是字符形式,例如:'c' disk_d=disk_check('d') disk_e=disk_check('e') if cpu > 70: msg = ''' 电脑快要爆炸了!请立刻丢掉电脑紧急避险! cpu利用率:%s%% ''' % cpu sendmail('CPU过高!',msg) if meom['percent'] >80: msg = ''' 内存过高!都快卡成PPT了,请尽快处理! 内存总大小:%sM 内存剩余大小:%sM 内存使用大小:%sM 内存使用率:%s%% ''' % (meom.get('total'), meom.get('free'), meom.get('used'), meom.get('percent')) sendmail('内存过高!', msg) if disk_c['percent'] >80: msg = ''' 硬盘c内存严重不足!请尽快整理!清除无用文件! 硬盘c总大小:%sM 硬盘c剩余大小:%sM 硬盘c使用大小:%sM 硬盘c使用率:%s%% ''' % (disk_c.get('total'),disk_c.get('used'), disk_c.get('free'), disk_c.get('percent')) sendmail('硬盘c内存严重不足!', msg) if disk_d['percent'] >80: msg = ''' 硬盘d内存严重不足!请尽快整理!清除无用文件! 硬盘d总大小:%sM 硬盘d剩余大小:%sM 硬盘d使用大小:%sM 硬盘d使用率:%s%% ''' % (disk_d.get('total'),disk_d.get('used'), disk_d.get('free'), disk_d.get('percent')) sendmail('硬盘d内存严重不足!', msg) if disk_e['percent'] > 80: msg = ''' 硬盘e内存严重不足!请尽快整理!清除无用文件! 硬盘e总大小:%sM 硬盘e剩余大小:%sM 硬盘e使用大小:%sM 硬盘e使用率:%s%% ''' % (disk_e.get('total'), disk_e.get('used'), disk_e.get('free'), disk_e.get('percent')) sendmail('硬盘e内存严重不足!', msg) if __name__ == '__main__': main()
如果想要做到持续监控,只需要做一个计划任务,定时运行脚本即可!