返回顶部
首页 > 资讯 > 后端开发 > Python >python: 监控windows 下进
  • 354
分享到

python: 监控windows 下进

pythonwindows 2023-01-31 05:01:23 354人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目的: 针对windows下进程异常退出后,此程序自动启动被监控进程。如:监控Serv-U.exe 程序是使用python语言编写,可在Windows下双击MonitorWin32Process.exe直接运行。程序会

目的:
针对windows下进程异常退出后,此程序自动启动被监控进程。如:监控Serv-U.exe

程序是使用python语言编写,可在Windows下双击MonitorWin32Process.exe直接运行。程序会按照config.ini配置文件,进行监控进程。如果没有被监控的进程,则会按照进程启动路径自动启动。
详细使用请查看压包内的使用说明.

1.. 环境配置
2.. 使用说明
3.. 待改进
4.. 下载链接

5.. 发邮件通知功能源码.

1.. 环境配置

需要的安装包Python、wmi

介绍wmi 网站

  1. Http://tGolden.sc.sabren.com/python/wmi/index.html#what-is-it 

xp 安装WMI

  1. Windows installer: http://timgolden.me.uk/python/downloads/WMI-1.4.6.win32.exe 

win7 将安装包解压到python lib 目录下,详细查看readme文件。

  1. Zipped-up source: http://timgolden.me.uk/python/downloads/WMI-1.4.6.zip 
环境配置可能遇到的问题
  1. C:\Python27\Lib\WMI-1.4.6>python setup.py install 
  2. Traceback (most recent call last): 
  3.   File "setup.py", line 2, in <module> 
  4.     import wmi 
  5.   File "C:\Python27\Lib\WMI-1.4.6\wmi.py", line 88, in <module> 
  6.     from win32com.client import GetObject, Dispatch 
  7.     ImportError: No module named win32com.client 
解决方法:
相应python版本的win32扩展,安装后问题即解决。网址如下:
http://sourceforge.net/projects/pywin32/files/

 

程序代码

  1. #!-*- encoding: utf-8 -*- 
  2. import logging 
  3. import wmi 
  4. import os 
  5. import time 
  6. from ConfigParser import ConfigParser 
  7.  
  8. CONFIGFILE='./config.ini' 
  9. config = ConfigParser() 
  10. config.read(CONFIGFILE) 
  11.  
  12. ProgramPath = config.get('MonitorProgramPath','ProgramPath') 
  13. ProcessName = config.get('MonitorProcessName','ProcessName') 
  14.  
  15.  
  16. c = wmi.WMI() 
  17.  
  18. def main(): 
  19.   
  20.    ProList = []             #如果在main()函数之外ProList 不会清空列表内容. 
  21.     for process in c.Win32_Process(): 
  22.         ProList.append(str(process.Name)) 
  23.  
  24.     if ProcessName in ProList: 
  25.         print "Service " + ProcessName + " is running...!!!" 
  26.         if os.path.isdir("c:\MonitorWin32Process"): 
  27.             pass 
  28.         else: 
  29.             os.makedirs("c:\MonitorWin32Process") 
  30.  
  31.     else: 
  32.         print "Service " + ProcessName + " error ...!!!" 
  33.         os.startfile(ProgramPath) 
  34.  
  35. if __name__ == "__main__": 
  36.     while True: 
  37.         main() 
  38.         time.sleep(300) 
 
1..2 将py程序编译成windows下可执行文件
py2exe下载地址,找到与安装的Python 版本相同的py2exe版本.
  1. http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/ 
  2.  
  3. from distutils.core import setup 
  4. import py2exe 
  5.  
  6. setup(console=['MonitorWin32Process.py'],   
 
问题描述:
当执行C:\Documents and Settings\Administrator\Desktop\temp>python setup.py py2exe
执行一段代码后出现 弹出一个窗口提示Python.exe 程序将要结束的

解决方法 :

这是因为setup.py中 logo.ico图片是由原来的gif 直接修改后缀名为ico 造成的.
  1. from distutils.core import setup 
  2. import py2exe 
  3.   
  4. setup( 
  5. console = [{"script" : "MonitorWin32Process.py", "icon_resources" : [(1, "logo.ico")]}] 

注: 将以上 console 修改windowns 在windowns下的可执行程序,将不会出现cmd窗口.


2.. 使用说明
2..1 必须先配置config.ini
配置压缩包中config.ini文件,修改服务启动的路径和进程在任务管理器中的名字.

  1. [MonitorProgramPath] 
  2. ProgramPath: C:\Program Files\RhinoSoft.com\Serv-U\Serv-U.exe 
  3.   
  4. [MonitorProcessName] 
  5. ProcessName: Serv-U.exe 
  6.   
  7. 如: 
  8. [MonitorProgramPath] 
  9. ProgramPath: C:\Program Files\Tencent\QQ\Bin\QQ.exe 
  10.   
  11. [MonitorProcessName] 
  12. ProcessName: QQ.exe 

2..2
将MonitorWin32Process.exe拖到启动中. 即可开机启动.

3.. 待改进
3..1 出现错误时在屏幕上一闪马上消失了.

应添加下面红色代码,这样有利于排查错误.
 
  1. if ProcessName in ProList: 
  2.     print "Service " + ProcessName + " is running...!!!" 
  3.     if os.path.isdir("c:\MonitorWin32Process"): 
  4.         pass 
  5.     else: 
  6.         os.makedirs("c:\MonitorWin32Process") 
  7.  
  8. else: 
  9.     print "Service " + ProcessName + " error ...!!!" 
  10.     os.startfile(ProgramPath) 
  11.     time.sleep(5) 

3..2 应该加上日志功能.

   按天或按月进行分日志.

4.. 下载链接

  1. http://down.51cto.com/data/381581 

5. 发邮件通知功能源码.

  1. #!-*- encoding: utf-8 -*- 
  2. import wmi,os,time,smtplib 
  3. from ConfigParser import ConfigParser 
  4. from email.mime.text import MIMEText 
  5.  
  6. #### 发送邮件 代码开始 
  7.  
  8. ##################### 
  9. #获取smtp服务器,用户名、口令、邮箱的后缀、收件人列表 
  10. CONFIGFILE="./config.ini" 
  11. config = ConfigParser() 
  12. config.read(CONFIGFILE) 
  13.  
  14. mailHost = config.get('mailHost','Host') 
  15. mailUser = config.get('mailUser','User') 
  16. mailPass = config.get('mailPass','Pass') 
  17. mailPostfix = config.get('mailPostfix','Postfix') 
  18. mailToList = config.get('mailToList','toList') 
  19.  
  20. #获取主题 
  21. subject = config.get('subject','subject') 
  22.  
  23.  
  24. ###################### 
  25.  
  26. def send_mail(mailToList,sub,content): 
  27.     ''' 
  28.     to_list:发给谁 
  29.     sub:主题 
  30.     content:内容 
  31.     ''' 
  32.     RealTime = time.strftime("%Y-%m-%d %X",time.localtime()) 
  33.     content = RealTime + " " + content 
  34.     me="Monitor"+"<"+mailUser+"@"+mailPostfix+">" 
  35.     msg = MIMEText(content,'plain','gb2312') 
  36.     msg['Subject'] = sub 
  37.     msg['From'] = me 
  38.     msg['To'] = mailToList 
  39.     try: 
  40.         s = smtplib.SMTP() 
  41.         s.connect(mailHost) 
  42.         s.login(mailUser,mailPass) 
  43.         s.sendmail(me, mailToList, msg.as_string()) 
  44.         s.close() 
  45.         return True 
  46.     except Exception, e: 
  47.         print str(e) 
  48.         return False 
  49. #### 发送邮件 代码结束 
  50.  
  51. dirName = "d:\MonitorWin32Process\\" 
  52. logSuffix = ".log" 
  53. logErrorSuffix = ".error.log" 
  54. config = ConfigParser() 
  55. config.read(CONFIGFILE) 
  56.  
  57. ProgramPath = config.get('MonitorProgramPath','ProgramPath') 
  58. ProcessName = config.get('MonitorProcessName','ProcessName')  
  59. SleepTime = config.get('ProcessSleepTime','SleepTime') 
  60.  
  61. if not os.path.isdir(dirName): 
  62.     os.makedirs(dirName) 
  63.  
  64. c = wmi.WMI() 
  65.  
  66. def main():  
  67.     ProList = []               #如果在main()函数之外ProList 不会清空列表内容. 
  68.     timetimeDay = time.strftime("%Y-%m-%d",time.localtime()) 
  69.     timetimeLog = time.strftime("%Y-%m-%d %X",time.localtime()) 
  70.     logFileName = dirName + timeDay + logSuffix 
  71.     logFileNameError = dirName + timeDay + logErrorSuffix 
  72.     if  not os.path.isfile(logFileName): 
  73.         file(logFileName,'a') 
  74.  
  75.     for process in c.Win32_Process():  
  76.         ProList.append(str(process.Name))  
  77.  
  78.     if ProcessName in ProList:  
  79.         content = timeLog + " Service " + ProcessName + " is running...!!!\n"  
  80.         logFile = open(logFileName,'a+') 
  81.         logFile.write(content) 
  82.         logFile.close() 
  83.  
  84.     else: 
  85.         content = timeLog + " Service " + ProcessName + " is error !!!" + "\n" 
  86.         logFile = open(logFileNameError,'a+') 
  87.         logFile.write(content) 
  88.         logFile.close() 
  89.         os.startfile(ProgramPath) 
  90.         send_mail(mailToList,subject,content) 
  91.          
  92.  
  93. if __name__ == "__main__": 
  94.     while True: 
  95.         main() 
  96.         time.sleep(int(SleepTime)) 

 

--结束END--

本文标题: python: 监控windows 下进

本文链接: https://lsjlt.com/news/189203.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python: 监控windows 下进
    目的: 针对Windows下进程异常退出后,此程序自动启动被监控进程。如:监控Serv-U.exe 程序是使用python语言编写,可在Windows下双击MonitorWin32Process.exe直接运行。程序会...
    99+
    2023-01-31
    python windows
  • python监控进程
    [root@bogon ~]# cat monitor.py  #!/usr/bin/env  python  import os process = "/tmp/sshd.lock" os.system("ps -ef|grep sshd...
    99+
    2023-01-31
    进程 python
  • python监控windows的CPU,
    有一批windows系统需要监控,无论是zabbix、nagios都需要安装相关插件,操作起来比较麻烦。 python的psutil模块可以跨平台监控linux、windows、mac等,于是使用python写监控脚本,然后利用py2ex...
    99+
    2023-01-31
    python windows CPU
  • Python进行远程视频监控
    代码所需第三方库:imaplib,pyautogui 从网上看到过用python远程发送截图的博客,这次我要用python实现远程视频监控,看起来既高大上做起来又非常简单。先说一说整体思路,我们要做到手机发送邮件,python脚本...
    99+
    2023-01-31
    视频监控 Python
  • Python 多进程使用之监控
    下面简单写下实现方式,具体代码不会全部贴出来。需要使用的py库有下面几个import urllib2 import socket from multiprocessing import Poolurllib2用于请求网页socket用于限制...
    99+
    2023-01-31
    进程 Python
  • Ubuntu下如何监控CPU监控温度
    这篇文章主要讲解了“Ubuntu下如何监控CPU监控温度”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Ubuntu下如何监控CPU监控温度”吧!sensorsensor是一个简单的命令行实用...
    99+
    2023-06-27
  • JavaScript实现监控上传和下载进度
    目录一、写在前面二、xhr 监控进度三、axios 监控进度四、写在后面一、写在前面 网路的不稳定性,网速的变化,会导致有时一个请求可能需要很长的的时间,而这个过程如果没有相应的提示...
    99+
    2024-04-02
  • linux下进程监控的shell脚本分享
    这篇文章主要介绍“linux下进程监控的shell脚本分享”,在日常操作中,相信很多人在linux下进程监控的shell脚本分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux下进程监控的shell脚...
    99+
    2023-06-09
  • 系统资源监控-Windows自带资源监控
    1.引言 在性能测试过程中,往往需要对系统应用服务器,数据库服务器等服务端资源使用情况进行监控,以获取服务器性能数据,协助判断服务器性能是否满足性能需求;对于不同的服务器类型,监控服务器的方式也不尽相...
    99+
    2023-10-12
    服务器 运维
  • windows下如何用python控制打
    参考网址 首先下载python需要的库 pip install pypiwin32 简单例子 import tempfile import win32api import win32print filename = tempf...
    99+
    2023-01-31
    如何用 windows python
  • 利用Python写个摸鱼监控进程
    目录监控键盘监控鼠标记录监控日志完整代码总结继打游戏、看视频等摸鱼行为被监控后,现在打工人离职的倾向也会被监控。 有网友爆料称知乎正在低调裁员,视频相关部门几乎要裁掉一半。而在知乎裁...
    99+
    2024-04-02
  • 使用python对mysql主从进行监控
    1.编写python的监控脚本   A.通过获取mysql库中的状态值来判断这个mysql主从状态是否正常        B.进行两个状态值的判断           C.进行调取钉钉机器人,发送消息      2.设置定时任务进行脚本...
    99+
    2023-01-30
    主从 python mysql
  • python使用wmi模块获取windows下的系统信息 监控系统
    Python用WMI模块获取Windows系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息。 本文实例讲述了python使用wmi模块获取win...
    99+
    2022-06-04
    监控系统 模块 系统
  • 系统性能监控-Windows自带性能监控器
    1.引言 在性能测试过程中,往往需要对系统应用服务器,数据库服务器等服务端资源使用情况进行监控,以获取服务器性能数据,协助判断服务器性能是否满足性能需求;对于不同的服务器类型,监控服务器的方式也不尽相...
    99+
    2023-09-01
    服务器 java 数据库
  • python守护进程监控子进程怎么实现
    在Python中,可以使用multiprocessing模块来创建子进程并监控它们。具体实现方法如下: 导入multiproces...
    99+
    2023-10-23
    python
  • JavaScript如何实现监控上传和下载进度
    本篇内容主要讲解“JavaScript如何实现监控上传和下载进度”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript如何实现监控上传和下载进度”吧!一、写在前面网路的不稳定性,网速...
    99+
    2023-06-30
  • 怎么用Python写个摸鱼监控进程
    本篇内容主要讲解“怎么用Python写个摸鱼监控进程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python写个摸鱼监控进程”吧!监控键盘如果公司偷偷在我们的电脑上运行了一个后台进程,来...
    99+
    2023-06-29
  • windows下使用python进行串口
            Windows版本下的python并没有内置串口通讯的pyserial的库,所以需要自己下载。参照了网上的教程,有许多用的pip的安装方式,但是试了几个都没有用,所以想到用GitHub下载库文件,步骤分为: 1.在Gith...
    99+
    2023-01-31
    串口 windows python
  • monit监控服务进程
    Monit是一款功能非常丰富的进程、文件、目录和设备的监测软件,适用于Linux/Unix平台。 它可以自动修复那些已经停止运作的程序,特使适合处理那些由于多种原因导致的软件错误.安装monit,最好使用yum安装,使用编码包编译有问题yu...
    99+
    2023-01-30
    进程 monit
  • linux下 nginx监控问题
    nginx安装 保证虚拟机能上网: 1、root用户登录 2、查看nginx安装信息:yum info nginx 3、如果找不到nginx信息,则执行如下: rpm -ivh http://nginx.org/pa...
    99+
    2022-06-04
    linux nginx监控 linux nginx
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作