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使用email模块对邮件进行编码和解码的实例教程
Jul 01 Python
用pickle存储Python的原生对象方法
Apr 28 Python
浅谈function(函数)中的动态参数
Apr 30 Python
Python实现基本数据结构中栈的操作示例
Dec 04 Python
TensorFlow入门使用 tf.train.Saver()保存模型
Apr 24 Python
python爬虫 模拟登录人人网过程解析
Jul 31 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
django框架cookie和session用法实例详解
Dec 10 Python
使用python实现多维数据降维操作
Feb 24 Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 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 分页原理分析,大家可以看看
2009/12/21 PHP
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
php 猴子摘桃的算法
2017/06/20 PHP
Laravel下生成验证码的类
2017/11/15 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
动态控制Table的js代码
2007/03/07 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
使用svg实现动态时钟效果
2018/07/17 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
原生JS实现列表内容自动向上滚动效果
2019/05/22 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
Python微信公众号开发平台
2018/01/25 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
运动会入场词200字
2014/02/15 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
大学学生个人总结
2015/02/15 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书