加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

进程监控的python脚本

发布时间:2020-12-17 17:18:51 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 class_config.py#!/usr/bin/env python#coding:utf-8'''此处定义邮件的相关参数'''class Mail_conf(): sender = '[email?protected]' receiver = '[em

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

class_config.py

#!/usr/bin/env python
#coding:utf-8

'''此处定义邮件的相关参数'''
class Mail_conf():
    sender = '[email?protected]'
    receiver = '[email?protected]'
    host = 'smtp.126.com'
    port = '25'
    user = '[email?protected]'
    passwd = '123456'
    log_dir = 'sendmail_err_log'

'''此处定义监控程序以及启动路径,启动路径不能包含中文'''
#用法{程序名称:启动口令}
#配置重启日志名称,不能为空。
class ProgramPath():
    Path =  {'RTX.exe':'/home/admin','Foxmail.exe':'D:Program Files (x86)jisupdf','QQ.exe':'D:Program Files (x86)TencentQQBinqq.exe',}
    Restart_Log_path = 'Restart_log_path' 

SendMail.py

#!/usr/bin/env python
#coding:utf-8
import string,time
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from class_config import Mail_conf
'''发送邮件类'''
def send_mail(Title,context):        

    msg = MIMEText(context,'plain','utf-8')
    msg['Subject'] = Header(Title,'utf-8')
    try:
        smtp = smtplib.SMTP()  
        smtp.connect(Mail_conf.host,Mail_conf.port)  
        smtp.login(Mail_conf.user,Mail_conf.passwd)  
        smtp.sendmail(Mail_conf.sender,Mail_conf.receiver,msg.as_string())  
        smtp.quit()
    except Exception,e:
        Writelog = open(Mail_conf.log_dir,'ab')
        log = '%s-->%sn' % (time.strftime('%Y-%m-%d %H:%M:%S'),str(e))
        print log
        Writelog.write(log)
        Writelog.close()
if __name__ == "__main__":
    send_mail("Test Mail","这是一封测试邮件,更改邮箱配置在class_config.py中配置")
?
ProcessMoniter.py

#!/usr/bin/env python
#coding:utf-8
import psutil,time
import subprocess
from class_config import ProgramPath
     
def monitor():

     Time = time.time()
     log = open(ProgramPath.Restart_Log_path,'ab+')
     log.write('****************%s****************n' % time.strftime('%Y-%m-%d %H:%M:%S'))
     log.close()
     while True:
         ProcessName = ProgramPath.Path.keys()
         Process = psutil.process_iter()
         for i in Process:
             try:
                 if i.name() in ProcessName:
                     ProcessName.remove(i.name())
             except Exception,e:
                 pass
         for i in ProcessName:
             try:
                 Restart = subprocess.Popen(ProgramPath.Path[i],shell=False)
             except Exception,e:
                 err_log = '%s-->%sn' % (time.strftime('%Y-%m-%d %H:%M:%S'),str(e).strip())            
                 log = open(ProgramPath.Restart_Log_path,'ab+')
                 log.seek(-(len(str(e))),2)
                 if log.readline().strip() == str(e).strip():
                     if Time + 60 > time.time():
                         pass
                     else:
                         log.seek(0,2)
                         log.write(err_log)
                         log.close()
                         Time = time.time()
                 else:
                     log.seek(0,2)
                     log.write(err_log)
                     log.close()
                     Time = time.time()
         time.sleep(2)
if __name__ == "__main__":
    monitor() 
Net_io.py

#!/usr/bin/env python
#coding:utf-8
import psutil
import time
import sys
from optparse import OptionParser
parser = OptionParser()  
parser.add_option("-t","--time",dest="time",help="此参数可查看当前下载占的带宽,-t是测试时间",metavar="10")  

def Net_io(s):
    x = 0
    sum = 0
    while True:
        if x >= s:
            break
        r1 = psutil.net_io_counters().bytes_recv
        time.sleep(1)
        r2 = psutil.net_io_counters().bytes_recv
        y = r2 - r1
        print "%.2f Kb/s" % (y / 1024.0)
        sum += y
        x += 1
    result = sum / x
    print "33[1;32m %s秒内平均速度:%.2f Kb/s 33[1;m"  % (x,result / 1024.0)
if __name__ == "__main__":
    (options,args) = parser.parse_args()  
    if options.time:
        Net_io(options.time)
    else:
        Net_io(10)

sysinfo.py

#!/usr/bin/env python
#coding:utf-8
import psutil
import time
import sys

def Sysinfo():
    Boot_Start = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(psutil.boot_time()))  
    time.sleep(0.5)
    Cpu_usage = psutil.cpu_percent()
    RAM = int(psutil.virtual_memory().total/(1027*1024))
    RAM_percent = psutil.virtual_memory().percent
    Swap = int(psutil.swap_memory().total/(1027*1024))
    Swap_percent = psutil.swap_memory().percent
    Net_sent = psutil.net_io_counters().bytes_sent
    Net_recv = psutil.net_io_counters().bytes_recv
    Net_spkg = psutil.net_io_counters().packets_sent
    Net_rpkg = psutil.net_io_counters().packets_recv
    if __name__ == "__main__":
        BFH = r'%'
        print " 33[1;32m开机时间:%s33[1;m"  % Boot_Start
        print " 33[1;32m当前CPU使用率:%s%s33[1;m" % (Cpu_usage,BFH)
        print " 33[1;32m物理内存:%dMt使用率:%s%s33[1;m" % (RAM,RAM_percent,BFH)
        print "33[1;32mSwap内存:%dMt使用率:%s%s33[1;m" % (Swap,Swap_percent,BFH)
        print " 33[1;32m发送:%d Bytet发送包数:%d个33[1;m" % (Net_sent,Net_spkg)
        print " 33[1;32m接收:%d Bytet接收包数:%d个33[1;m" % (Net_recv,Net_rpkg)

        for i in psutil.disk_partitions():
            print " 33[1;32m盘符: %s 挂载点: %s 使用率: %s%s33[1;m" % (i[0],i[1],psutil.disk_usage(i[1])[3],BFH)
    else:
        File = open("sysinfo.log","ab+")
        File.write("CPU:%s   tRAM:%stNet_recv:%dtNet_sent:%drn" % (Cpu_usage,Net_recv,Net_sent))
        File.flush()
        File.close()
if __name__ == "__main__":
    Sysinfo()

主程序就不写了,大家自己看情况用就好了,好久没写过python了写的不好大家见谅

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读