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提取Linux内核源代码的目录结构实现方法
Jun 24 Python
Python断言assert的用法代码解析
Feb 03 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
python特性语法之遍历、公共方法、引用
Aug 08 Python
解决Python下imread,imwrite不支持中文的问题
Dec 05 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
Python-Flask:动态创建表的示例详解
Nov 22 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
Python使用openpyxl复制整张sheet
Mar 24 Python
python创建字典及相关管理操作
Apr 13 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 chmod 函数与批量修改文件目录权限
2010/05/10 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
繁简字转换功能
2006/07/19 Javascript
关于jQuery中的end()使用方法
2011/07/10 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
python关键字and和or用法实例
2015/05/28 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
python 对key为时间的dict排序方法
2018/10/17 Python
Python数据集切分实例
2018/12/08 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
初中政治教学反思
2014/01/17 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
首席执行官观后感
2015/06/03 职场文书
假期读书倡议书3篇
2019/08/19 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript