python监控端口脚本

此脚本根据端口判断进程是否存活, 如果有指定的端口就证明进程是没问题的, 如果检测不到端口就是说业务进程已经挂掉了, 此时自动重启程序, 不多说下面请看脚本

创建脚本

我这里模拟的是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‘] = ‘[email protected]‘
    try:
        smtp = smtplib.SMTP()
        smtp.connect(r‘pop.qq.com‘)
        smtp.login(‘[email protected]‘, ‘email_passwd‘)
        smtp.sendmail(‘[email protected]‘, [‘[email protected]‘], 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
            print ‘nginx 进程正常运行中 ... ‘
        time.sleep(5)
    except KeyboardInterrupt:
        sys.exit(‘\n‘)

脚本可以放在任意位置,启动方式: 守护进程

我的启动方式是, 守护进程nohup, 然后把打印的结果输入到日志文件中, 我再py脚本中并没有配置输出日志, 我这个加上的是标准输出, 下面是启动方式

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

看上面已经看出来, 我的脚本名字是jkport.py, 日志名字是time.log, 没5秒把监控到的信息输入进来, 一旦发现程序挂掉, 会自动启动, 如果检测到程序存在, 信息提示正常运行中

如有问题,请自行检测或反馈, 谢谢.

时间: 2024-11-13 04:07:05

python监控端口脚本的相关文章

python扫描端口脚本

#!/usr/bin/python#coding=utf-8'''一.socket模块的类方法:socket.socket(family,type)——创建并返回一个新的socket对象socket.getfqdn(name)——将使用点好分割的IP地址字符串转换成一个完整的域名socket.gethostbyname(name)——将主机名解析为一个使用点号分隔的IP地址字符串socket.fromfd(fd,family,type)——从现有文件描述符创建一个socket对象二.socket

python 监控mysql脚本

#!/usr/bin/env python #-*- coding: UTF-8 -*- from __future__ import print_function from mysql import connector import logging,argparse,sys import sys #create user [email protected]'127.0.0.1' identified by '123456'; #grant replication client on *.* t

python监控redis 脚本(结合zabbix)

#!/bin/python -- coding:UTF-8 -- import redisimport sys """各个参数的解释:keyspace_misses //表示未命中数 keyspace_hits //表示命中数 keyspace_hits_rate = keyspace_hits /(keyspace_hits + keyspace_misses)connected_clients //客户端连接数 blocked_clients //客户端阻塞数 conne

python编写json脚本监控端口

#json脚本 #!/usr/bin/env python import os import json data = [] command="ps aux | grep bz-tw-and-s | awk '{print $11}' | awk -F'/' '{print $2}'| grep -v '^$'" service = os.popen('%s' % command ,'r').readlines() for service in service: service_name

【Python运维脚本】Python监控内存(swap)的使用率

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected] #Python监控内存(swap)的使用率 ''' 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 ''' #!/usr/bin/python import os def getAllit

【Python运维脚本】Python监控磁盘

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v3.3 #Author: [email protected] #Python监控磁盘 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/python import

【Python运维脚本】Python监控网卡流量

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected]126.com #Python监控网卡流量 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/pytho

【Python运维脚本】Python监控系统负载

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected]126.com #Python监控系统负载 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/pytho

【Python运维脚本】Python监控CPU情况

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected]126.com #Python监控CPU情况 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/pyth