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实现的二叉树定义与遍历算法实例
Jun 30 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
Python利用splinter实现浏览器自动化操作方法
May 11 Python
python 字符串和整数的转换方法
Jun 25 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
Python3中的最大整数和最大浮点数实例
Jul 09 Python
Python入门Anaconda和Pycharm的安装和配置详解
Jul 16 Python
python字符串反转的四种方法详解
Dec 02 Python
Python应用实现处理excel数据过程解析
Jun 19 Python
python中的被动信息搜集
Apr 29 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 Python
Python必备技巧之函数的使用详解
Apr 04 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
快速开发一个PHP扩展图文教程
2008/12/12 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
javascript 闭包详解
2015/02/15 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
python代码过长的换行方法
2018/07/19 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
装饰资料员岗位职责
2013/12/30 职场文书
电气工程师岗位职责
2014/01/01 职场文书
七年级英语教学反思
2014/01/15 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
具结保证书范本
2015/05/11 职场文书
家长反馈意见及建议
2015/06/03 职场文书
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技