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通过Pygame绘制移动的矩形实例代码
Jan 03 Python
Python工程师面试必备25条知识点
Jan 17 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
python实现三维拟合的方法
Dec 29 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
PyQt5固定窗口大小的方法
Jun 18 Python
Python的log日志功能及设置方法
Jul 11 Python
linux环境下安装python虚拟环境及注意事项
Jan 07 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 Python
详解Django中异步任务之django-celery
Nov 05 Python
Python卷积神经网络图片分类框架详解分析
Nov 07 Python
python超详细实现完整学生成绩管理系统
Mar 17 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
Yii使用Captcha验证码的方法
2015/12/28 PHP
详解HTTP Cookie状态管理机制
2016/01/14 PHP
js 内存释放问题
2010/04/25 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
python实现绘制树枝简单示例
2014/07/24 Python
python中global与nonlocal比较
2014/11/21 Python
Python中subprocess的简单使用示例
2015/07/28 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
python集合删除多种方法详解
2020/02/10 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
Python reversed函数及使用方法解析
2020/03/17 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
历史专业毕业生的自我鉴定
2013/11/15 职场文书
应用艺术毕业生的自我评价
2013/12/04 职场文书
党员自我剖析材料
2014/08/31 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
导游词之阆中古城
2019/12/23 职场文书