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生成IP段的方法
Jul 07 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
python opencv设置摄像头分辨率以及各个参数的方法
Apr 02 Python
python爬虫之自动登录与验证码识别
Jun 15 Python
Python中几种属性访问的区别与用法详解
Oct 10 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
Python 实现二叉查找树的示例代码
Dec 21 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
PHP生成静态页
2006/11/25 PHP
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
彻底杜绝PHP的session cookie错误
2009/08/09 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
Python实现全排列的打印
2018/08/18 Python
Python实现常见的回文字符串算法
2018/11/14 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
Python几种常见算法汇总
2020/06/02 Python
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
毕业生个人求职的自我评价
2013/10/28 职场文书
电子商务专业个人的自我评价
2013/12/19 职场文书
秦兵马俑教学反思
2014/02/07 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
竞聘书的秘诀
2019/04/02 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书