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使用Flask框架获取当前查询参数的方法
Mar 21 Python
python去除所有html标签的方法
May 05 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
Python中实现switch功能实例解析
Jan 11 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
Flask框架工厂函数用法实例分析
May 25 Python
如何使用django的MTV开发模式返回一个网页
Jul 22 Python
基于python的opencv图像处理实现对斑马线的检测示例
Nov 29 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 Python
如何利用Matlab制作一款真正的拼图小游戏
May 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函数和特点
2013/08/08 PHP
javascript window对象属性整理
2009/10/24 Javascript
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
在html页面上拖放移动标签
2010/01/08 Javascript
google 搜索框添加关键字实现代码
2010/04/24 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
文员个人求职自荐信
2013/09/21 职场文书
自荐信要包含哪些内容
2013/11/06 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
大学毕业生求职自荐信
2014/02/20 职场文书
乐山大佛导游词
2015/02/02 职场文书
污染环境建议书
2015/09/14 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
如何使用SQL Server语句创建表
2022/04/12 SQL Server