欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

代碼講解Python對(duì)Windows服務(wù)進(jìn)行監(jiān)控

系統(tǒng) 1632 0

我們首先來看下python的全部代碼,大家可以直接復(fù)制后測(cè)試:

            
#-*- encoding: utf-8 -*-  
import logging  
import wmi  
import os  
import time  
from ConfigParser import ConfigParser  
import smtplib  
from email.mime.text import MIMEText  
import socket 
from datetime import datetime 
import re 
import sys 
import time 
import string 
import psutil  
import threading 
from threading import Timer   
import logging 
# 創(chuàng)建一個(gè)logger  
logger = logging.getLogger('Monitor')  
logger.setLevel(logging.DEBUG)  
   
# 創(chuàng)建一個(gè)handler,用于寫入日志文件  
fh = logging.FileHandler('test.log')  
fh.setLevel(logging.DEBUG)  
   
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  
fh.setFormatter(formatter)  
logger.addHandler(fh)  

reload(sys) # Python2.5 初始化后會(huì)刪除 sys.setdefaultencoding 這個(gè)方法,我們需要重新載入  
sys.setdefaultencoding('utf-8')  
 
def send_mail(to_list,sub,content):  
  CONFIGFILE = 'config.ini'  
  config = ConfigParser()  
  config.read(CONFIGFILE)  
  mail_host=config.get('Mail','mail_host')      #使用的郵箱的smtp服務(wù)器地址,這里是163的smtp地址  
  mail_user=config.get('Mail','mail_user')              #用戶名  
  mail_pass=config.get('Mail','mail_pass')                #密碼  
  mail_postfix=config.get('Mail','mail_postfix')           #郵箱的后綴,網(wǎng)易就是163.com  
  me=sub+"<"+mail_user+"@"+mail_postfix+">"  
  msg = MIMEText(content,_subtype='plain',_charset='utf-8')  
  msg['Subject'] = sub  
  msg['From'] = me  
  msg['To'] = ";".join(to_list)        #將收件人列表以‘;'分隔  
  try:  
    server = smtplib.SMTP()  
    server.connect(mail_host)              #連接服務(wù)器  
    server.login(mail_user,mail_pass)        #登錄操作  
    server.sendmail(me, to_list, msg.as_string())  
    server.close()  
    return True  
  except Exception, e:  
    print str(e) 
    logger.info(str(e))    
    return False  
 
 
 #讀取配置文件中的進(jìn)程名和系統(tǒng)路徑,這2個(gè)參數(shù)都可以在配置文件中修改 
ProList = []  
#定義一個(gè)列表 
c = wmi.WMI()  
 
#獲取進(jìn)程所用內(nèi)存 
def countProcessMemoey(processName): 
  try: 
    CONFIGFILE = 'config.ini'  
    config = ConfigParser()  
    config.read(CONFIGFILE)  
 
    pattern = re.compile(r'([^\s]+)\s+(\d+)\s.*\s([^\s]+\sK)') 
    cmd = 'tasklist /fi "imagename eq ' + processName + '"' + ' | findstr.exe ' + processName 
    result = os.popen(cmd).read() 
    resultList = result.split("\n") 
    totalMem = 0.0 
    totalCpu = 0.0 
 
    print "*" * 80 
    for srcLine in resultList: 
      srcLine = "".join(srcLine.split('\n')) 
      if len(srcLine) == 0: 
        break 
      m = pattern.search(srcLine) 
      if m == None: 
        continue 
      #由于是查看python進(jìn)程所占內(nèi)存,因此通過pid將本程序過濾掉 
      if str(os.getpid()) == m.group(2): 
        continue 
      p = psutil.Process(int(m.group(2))) 
      cpu = p.cpu_percent(interval=1)   
      ori_mem = m.group(3).replace(',','') 
      ori_mem = ori_mem.replace(' K','') 
      ori_mem = ori_mem.replace(r'\sK','') 
      memEach = string.atoi(ori_mem) 
      totalMem += (memEach * 1.0 /1024) 
      totalCpu += cpu 
      print 'ProcessName:'+ m.group(1) + '\tPID:' + m.group(2) + '\tmemory size:%.2f'% (memEach * 1.0 /1024), 'M' + ' CPU:'+str(cpu)+'%' 
    print 'ProcessName:'+ m.group(1)+' TotalMemory:'+str(totalMem)+'M'+' totalCPU:'+str(totalCpu)+'%' 
    logger.info('ProcessName:'+ m.group(1)+' TotalMemory:'+str(totalMem)+'M'+' totalCPU:'+str(totalCpu)+'%') 
    print "*" * 80 
      
    if totalMem> float(config.get('MonitorProcessValue','Memory')): 
      print 'Memory Exceed!' 
      IP = socket.gethostbyname(socket.gethostname()) 
      now = datetime.now().strftime('%Y-%m-%d %H:%M:%S') 
      subject = IP +' ' + processName + '內(nèi)存使用量過高!' 
      content = now + ' ' + IP +' ' + processName + '內(nèi)存使用量過高,達(dá)到'+str(totalMem) +'M\n請(qǐng)盡快處理!' 
      logger.info(processName +'內(nèi)存使用量過高,達(dá)到'+str(totalMem) +'M') 
      send_mail(['sunwei_work@163.com','sunweiworkplace@gmail.com'],subject, content) 
    if totalCpu > float(config.get('MonitorProcessValue','CPU')): 
      print 'CPU Exceed!' 
      IP = socket.gethostbyname(socket.gethostname()) 
      now = datetime.now().strftime('%Y-%m-%d %H:%M:%S') 
      subject = IP +' ' + processName + 'CPU使用率過高!' 
      content = now + ' ' + IP +' ' + processName + 'CPU使用率過高,達(dá)到'+str(totalCpu)+'%\n請(qǐng)盡快處理!' 
      logger.info(processName +'CPU使用率過高,達(dá)到'+str(totalMem) +'M') 
      send_mail(['sunwei_work@163.com','sunweiworkplace@gmail.com'],subject, content) 
  except Exception, e:  
    print str(e) 
    logger.info(str(e))   
  
#判斷進(jìn)程是否存活 
def judgeIfAlive(ProgramPath,ProcessName): 
  try: 
    print datetime.now().strftime('%Y-%m-%d %H:%M:%S') 
    for process in c.Win32_Process():  
      ProList.append(str(process.Name))  
    #把所有任務(wù)管理器中的進(jìn)程名添加到列表 
 
    if ProcessName in ProList: 
      countProcessMemoey(ProcessName)  
    #判斷進(jìn)程名是否在列表中,如果是True,則所監(jiān)控的服務(wù)正在 運(yùn)行狀態(tài), 
    #打印服務(wù)正常運(yùn)行 
      print ''  
      print ProcessName+" Server is running..."  
      print ''  
      logger.info(ProcessName+" Server is running...") 
    else:  
      #如果進(jìn)程名不在列表中,即監(jiān)控的服務(wù)掛了,則在log文件下記錄日志 
      #日志文件名是以年月日為文件名 
      IP = socket.gethostbyname(socket.gethostname()) 
      now = datetime.now().strftime('%Y-%m-%d %H:%M:%S') 
      subject = IP +' ' + ProcessName + '已停止運(yùn)行!' 
      logger.info( ProcessName + '已停止運(yùn)行!') 
      content = now + ' ' + IP +' ' + ProcessName + '已停止運(yùn)行!' +'\n請(qǐng)盡快處理!' 
      send_mail(['sunwei_work@163.com','sunweiworkplace@gmail.com'],subject, content) 
      print ProcessName+' Server is not running...'  
      #打印服務(wù)狀態(tài) 
      logger.info('\n'+'Server is not running,Begining to Restart Server...'+'\n'+(time.strftime('%Y-%m-%d %H:%M:%S --%A--%c', time.localtime()) +'\n')) 
      #寫入時(shí)間和服務(wù)狀態(tài)到日志文件中 
      os.startfile(ProgramPath)  
      #調(diào)用服務(wù)重啟 
      logger.info(ProcessName+'Restart Server Success...'+'\n'+time.strftime('%Y-%m-%d %H:%M:%S --%A--%c', time.localtime())) 
      print ProcessName+'Restart Server Success...'  
      print time.strftime('%Y-%m-%d %H:%M:%S --%A--%c', time.localtime())  
    del ProList[:]  
    #清空列表,否則列表會(huì)不停的添加進(jìn)程名,會(huì)占用系統(tǒng)資源 
  except Exception, e:  
    print str(e) 
    logger.info(str(e))   
def startMonitor(ProgramPathDict,ProcessNameDict) :  
  for i in range(0,len(ProcessNameDict)): 
    judgeIfAlive(ProgramPathDict[i],ProcessNameDict[i]) 
if __name__=="__main__" :  
  CONFIGFILE = 'config.ini'  
  config = ConfigParser()  
  config.read(CONFIGFILE)  
  ProgramPathDict = config.get('MonitorProgramPath','ProgramPath').split("|")  
  ProcessNameDict = config.get('MonitorProcessName','ProcessName').split("|") 
  while True:  
    startMonitor(ProgramPathDict,ProcessNameDict)  
    time.sleep(int(config.get('MonitorProcessValue','Time'))) 
          

所用配置文件 config.ini

            
[MonitorProgramPath]  
ProgramPath: C:\Windows\System32\services.exe|C:\Program Files (x86)\Google\Chrome\Application\chrome.exe  
[MonitorProcessName]  
ProcessName: services.exe|chrome.exe 
[MonitorProcessValue] 
Memory:5000.0 
CPU:50.0 
Time:60 
[Mail]  
mail_host: smtp.163.com 
mail_user:  
mail_pass:  
mail_postfix: 163.com 
          

以上就是本次小編整理的關(guān)于Python對(duì)Windows服務(wù)進(jìn)行監(jiān)控的全部代碼內(nèi)容,感謝你對(duì)腳本之家的支持。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 9久热这里只有精品视频在线观看 | 日本高清www午夜视频 | 精品久久不卡 | 啪啪网页 | 日韩五月 | 新白娘子传奇50集免费赵雅芝版 | 一区二区三区免费网站 | 四虎最新免费网址 | 久青草影视 | 国产成在线观看免费视频 | 欧美精品一区二区免费 | 冰封侠:时空行者 | t66y最新地址一地址二69 | 午夜大片 | 精品视频在线免费看 | 四虎影院在线播放 | 污网站观看 | 婷婷综合久久狠狠色99h | 亚洲岛国片 | 自拍偷拍第一页 | 色综合久久88色综合天天 | 精品伊人久久久99热这里只 | 欧美大片一区二区三区 | 日韩亚洲欧美中文高清在线 | 国产精品人妻无码久久久郑州 | 五月婷综合 | 99pao成人国产永久免费视频 | 国产亚洲精品久久精品6 | 久久精品亚洲欧美日韩精品中文字幕 | 日本高清在线观看视频www | 青青青国产观看免费视频 | a毛片| 日产国产欧美视频一区精品 | 仇爱电视剧泰剧在线观看免费播放 | 日本高清中文字幕一区二区三区 | 亚洲成人久久久 | 两性视频网| 亚洲激情视频 | 午夜影视免费片在线观看 | 国产精品免费观看 | 总攻调教各种受肉 |