您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警

51自学网 2021-10-30 23:02:50
  python
这篇教程python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警写得很实用,希望能帮到您。

    使用Windows的wmic命令,获取可执行文件的运行状况、文件路径、PID,如果可执行文件挂掉,就重启并邮件告警。

      因为监控的可执行文件的文件名一样,不好区分,所以我使用文件的绝对路径为标准来判断是否正常运行,代码及详细解释如下:

# -*- coding: utf-8 -*- import osimport win32apiimport smtplibfrom email.mime.text import MIMETextdef get_pidWay(file_name):  ept_list = []  temp_list = []  pid_way = os.popen("wmic process where name='" + file_name + "' get processid,executablepath,name").readlines()  for j in pid_way:    temp_list.append(j.split())  while ept_list in temp_list:    temp_list.remove(ept_list)  return(temp_list) def open_file(filePath):  win32api.ShellExecute(0, 'open', filePath, '','',1)def mailsend (mailtext,mailsubject):  mailserver = "smtp.qq.com"  username_send = '发送的邮箱地址'  password = '密码'  username_recv = '接收的邮箱地址'  mail = MIMEText(mailtext)  mail['Subject'] = mailsubject  mail['From'] = username_send  mail['To'] = username_recv  smtp = smtplib.SMTP_SSL(mailserver)  smtp.login(username_send,password)  smtp.sendmail(username_send,username_recv,mail.as_string())  smtp.quit()  print ('success')  file_path = "可执行文件的绝对路径"fileName = '可执行文件名'mailtext = '报警邮件内容'mailsubject = '报警邮件标题'exe_info = get_pidWay(fileName)pos = 0for i in range(len(exe_info)):  if file_path in exe_info[i][0]:    pos = 1  else:    passif pos == 1:  passelse:  open_file(r"可执行文件名")  mailsend(mailtext,mailsubject)

1.get_pidWay函数:

  输入file_name,返回文件路径、文件名、文件Pid的列表,用split函数和ept_list字符串使返回的列表变成[[文件路径,文件名,Pid],[文件路径,文件名,Pid]]这样的二维数组;

2.open_file函数:

  使用win32api模块,类似在cmd中执行程序,打开指定的可执行文件;

3.mailsend函数:

  发送邮件,我用的qq的smtp模块,在qq邮箱的设置里可以开启smtp端口;

  username_send发送邮件的邮箱地址,password是开启smtp端口时弹出的字符串;

  username_recv收邮件的邮箱地址;

  在内网要采用smtplib.SMTP_SSL(mailserver)连接(其中mailserver= ‘smtp.qq.com'),使用smtp = smtplib.SMTP(mailserver,port=465)方式会报错:smtplib.SMTPServerDisconnected: Connection unexpectedly closed

4.主函数:

  file_path :放置可执行文件的目录;

  fileName:可执行文件的文件名;

  for循环来判断file_path是否在我们 get_pidWay函数返回的列表中,从而知道可执行文件是否正常运行;

  如果没有运行,pos = 0,则运行文件、发送邮件。

以上就是python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警的详细内容,更多关于python wmic命令监控文件运行状况的资料请关注51zixue.net其它相关文章!


如何用Django处理gzip数据流
python实现按日期归档文件
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。