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


Posted in Python onJanuary 30, 2021

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

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

# -*- coding: utf-8 -*- 
import os
import win32api
import smtplib
from email.mime.text import MIMEText


def 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 = 0
for i in range(len(exe_info)):
  if file_path in exe_info[i][0]:
    pos = 1
  else:
    pass

if pos == 1:
  pass
else:
  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命令监控文件运行状况的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python logging模块学习笔记
May 24 Python
python清除字符串里非数字字符的方法
Jul 02 Python
Django中的“惰性翻译”方法的相关使用
Jul 27 Python
python 实现在txt指定行追加文本的方法
Apr 29 Python
使用python 3实现发送邮件功能
Jun 15 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
Django REST framework 视图和路由详解
Jul 19 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
python 遗传算法求函数极值的实现代码
Feb 11 Python
python如何发送带有附件、正文为HTML的邮件
Feb 27 Python
Python中zipfile压缩包模块的使用
May 14 Python
如何用Django处理gzip数据流
Jan 29 #Python
Spy++的使用方法及下载教程
Jan 29 #Python
Python实现随机爬山算法
Jan 29 #Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 #Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 #Python
python热力图实现简单方法
Jan 29 #Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 #Python
You might like
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
PHP自动生成后台导航网址的最佳方法
2013/08/27 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
javascript中"/"运算符常见错误
2010/10/13 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python去除所有html标签的方法
2015/05/05 Python
python连接字符串的方法小结
2015/07/13 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
Python执行时间的计算方法小结
2017/03/17 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
python读取ini配置文件过程示范
2019/12/23 Python
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
在校生自我鉴定
2014/01/23 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
委托公证书范本
2014/04/03 职场文书
老干部工作先进事迹
2014/08/17 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
教师求职自荐信
2015/03/26 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
同学联谊会邀请函
2019/06/24 职场文书
浅谈Redis的几个过期策略
2021/05/27 Redis
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
Java实现带图形界面的聊天程序
2022/06/10 Java/Android
nginx访问报403错误的几种情况详解
2022/07/23 Servers