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 获取网页编码方式实现代码
Mar 11 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
python3调用R的示例代码
Feb 23 Python
python实现简易内存监控
Jun 21 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
对python dataframe逻辑取值的方法详解
Jan 30 Python
对Python协程之异步同步的区别详解
Feb 19 Python
python中for循环变量作用域及用法详解
Nov 05 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
python 求两个向量的顺时针夹角操作
Mar 04 Python
使用pandas模块实现数据的标准化操作
May 14 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 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 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
php表单提交实例讲解
2015/11/12 PHP
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
详解JavaScript函数
2015/12/01 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
JS伪继承prototype实现方法示例
2018/06/20 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
linux下安装easy_install的方法
2013/02/10 Python
python多进程实现进程间通信实例
2017/11/24 Python
用python实现的线程池实例代码
2018/01/06 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Django用户认证系统 User对象解析
2019/08/02 Python
Django实现文件上传和下载功能
2019/10/06 Python
python读取ini配置文件过程示范
2019/12/23 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
尼克松手表官网:Nixon手表
2019/03/17 全球购物
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
女子职高个人自荐书
2014/02/01 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
个人催款函范文
2015/06/23 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
php解析非标准json、非规范json的方式实例
2022/05/10 PHP
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技