python監控端口腳本[jkport1.0.py]


此腳本根據端口判斷進程是否存活, 如果有指定的端口就證明進程是沒問題的, 如果檢測不到端口就是說業務進程已經掛掉了, 此時自動重啟程序, 不多說下面請看腳本

創建腳本

我這里模擬的是nginx, 監控端口是9999, 如果您的是8080或者80, 可以自行更改,記得啟動程序命令也需要修改喔,

這個腳本是linux中的, 如果是windows中的請看這里Windows server利用批處理腳本判斷端口, 啟動tomcat原理都是一樣的, 換湯不換葯.

里面也支持郵件提醒功能, 需要的自行配置.

#!/usr/bin/env python
#!coding=utf-8
import os
import time
import sys
import smtplib
from email.mime.text import MIMEText
from email.MIMEMultipart import MIMEMultipart

def sendsimplemail (warning):
    msg = MIMEText(warning)
    msg['Subject'] = 'python first mail'
    msg['From'] = 'root@localhost'
    try:
        smtp = smtplib.SMTP()
        smtp.connect(r'pop.qq.com')
        smtp.login('mail@qq.com', 'mail_passwd')
        smtp.sendmail('mail@qq.com', ['mail@qq.com'], msg.as_string())
        smtp.close()
    except Exception, e:
        print e

while True:
    Pro_status = os.popen('netstat -tulnp | grep nginx','r').readlines()
    now_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
    try:
        if Pro_status == []:
            os.system('service nginx start')
            new_Pro_status = os.popen('netstat -tulnp | grep nginx','r').readlines()
            str1 = ''.join(new_Pro_status)
            port = str1.split()[3].split(':')[-1]
            if port != '9999':
                print 'nginx start fail ...'
            else:
                print 'nginx start success ...'
                sendsimplemail(warning = "This is a warning!!!")
        else:
            print now_time , 'nginx 進程正常運行中 ... '
        time.sleep(10)
    except KeyboardInterrupt:
        sys.exit('\n') 

腳本可以放在任意位置,啟動方式: 守護進程

我的啟動方式是, 守護進程nohup, 然后把打印的結果輸入到日志文件中, 我再py腳本中並沒有配置輸出日志, 我這個加上的是標准輸出, 下面是啟動方式

nohup python -u jkport.py >>time.log 2>&1 &

看上面已經看出來, 我的腳本名字是jkport.py, 日志名字是time.log, 沒5秒把監控到的信息輸入進來, 一旦發現程序掛掉, 會自動啟動, 如果檢測到程序存在, 信息提示正常運行中

如有問題,請自行檢測或反饋, 謝謝.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM