Python自动化获取Linux服务状态与端口
在平时的运维工作当中 ,查看服务状态是我们必不可少的一个操作,每次在频繁的输入netstat等命令时候,感觉身心疲惫,所以为了方便关注服务的状态,特此我用python写了一个脚本!使用说明:此版本为1.0版,后续还会持续优化此脚本!此脚本用到的库为python3的标准库,不用另其安装第三方库,方便了不可上网环境的小伙伴的工作!脚本中包含了:tomcat、nginx、redis、mysql、apac
·
在平时的运维工作当中 ,查看服务状态是我们必不可少的一个操作,每次在频繁的输入netstat等命令时候,感觉身心疲惫,所以为了方便关注服务的状态,特此我用python写了一个脚本!
使用说明:此版本为1.0版,后续还会持续优化此脚本!
此脚本用到的库为python3的标准库,不用另其安装第三方库,方便了不可上网环境的小伙伴的工作!
脚本中包含了:tomcat、nginx、redis、mysql、apache-mq、fastdfs、openfire、elasticsearch服务,自己可以根据实际环境来添加或者修改服务的函数!
使用方法:1.在本地环境新建一个目录
2.把run.sh和ServiceMonitor.py放到该目录下,执行run.sh运行即可!
run.sh代码如下 :
#!/bin/bash
python3 ServiceMonitor.py
ServiceMonitor.py代码如下:
#!/usr/bin/python3
#coding:utf-8
import os
import readline
def get_tomcat(): #获取tomcat服务的函数
tomcat_port = os.popen("netstat -anput |grep 38080 | grep LISTEN | awk '{print $4}' | awk -F: '{print $4}'")
tomcat_port = tomcat_port.read().strip()
return tomcat_port
def get_nginx():#获取nginx服务的函数
nginx = os.popen("ps -aux | grep -v grep | grep nginx | grep master | awk '{print $12}'")
nginx = nginx.read().strip()
return nginx
def get_nginx_port():#获取nginx端口的函数
nginx_port = os.popen("netstat -anput |grep -v grep | grep LISTEN | grep nginx | awk '{print $4}' | awk -F: '{print $2}'| tr '\n' ' '")
nginx_port = nginx_port.read().strip()
return nginx_port
def get_redis():#获取redis服务的函数
redis = os.popen("netstat -anput |grep redis | grep LISTEN | awk '{print $4}' | awk -F: '{print $2}'")
redis = redis.read().strip()
return redis
def get_mysql():#获取mysql服务的函数
mysql = os.popen("netstat -anput | grep mysql | grep LISTEN | awk '{print $4}' | awk -F: '{print $4}'")
mysql = mysql.read().strip()
return mysql
def get_mq():#获取apache-mq服务的函数
mq = os.popen("netstat -anput |grep 61616 | grep LISTEN | awk '{print $4}' | awk -F: '{print $4}'")
mq = mq.read().strip()
return mq
def get_fdfs_trackerd():#获取FastDFS-tracker服务的函数
trackerd = os.popen("netstat -anput |grep fdfs | grep LISTEN | grep trackerd | awk '{print $4}' | awk -F: '{print $2}'")
trackerd = trackerd.read().strip()
return trackerd
def get_fdfs_storaged():#获取FastDFS-storage服务的函数
storaged = os.popen("netstat -anput |grep fdfs | grep LISTEN | grep storaged | awk '{print $4}' | awk -F: '{print $2}'")
storaged = storaged.read().strip()
return storaged
def get_openfire():#获取openfire服务的函数
openfire = os.popen("netstat -anput | grep 9090 | grep LISTEN | awk '{print $4}' | awk -F: '{print $4}'")
openfire = openfire.read().strip()
return openfire
def get_es():#获取elasticsearch服务的函数
es = os.popen("ps -aux |grep -v grep |grep elasticsearch")
es = es.read().strip()
return es
def all_service():#调用所有以上编写函数的方法
if get_tomcat() == '38080':
print('>>>Tomcat 服务运行正常! 端口:38080')
else:
print('>>>ERROR<<<: Tomcat服务可能不存在或已宕机,请立即检查!')
if get_nginx() == 'master':
print('>>> Nginx 服务运行正常!端口:' + get_nginx_port())
else:
print('>>>ERROR<<<: Nginx 服务可能不存在或已宕机,请立即检查!')
if get_redis() != '':
print('>>> Redis 服务运行正常! 端口:' + get_redis())
else:
print('>>>ERROR<<<: Redis 服务可能不存在或已宕机,请立即检查!')
if get_mysql() != '':
print('>>> Mysql 服务运行正常! 端口:' + get_mysql())
else:
print('>>>ERROR<<<: Mysql 服务可能不存在或已宕机,请立即检查')
if get_mq() != '':
print('>>> apache-MQ服务运行正常! 端口:' + get_mq())
else:
print('>>>ERROR<<: apache-MQ服务可能不存在或已宕机,请立即检查!')
if get_fdfs_trackerd() and get_fdfs_storaged() != '':
print('>>> FastDFS服务运行正常! tracker端口:' + get_fdfs_trackerd() + ' ' + 'storage端口:' + get_fdfs_storaged())
elif get_fdfs_trackerd() == '':
print('>>>ERROR<<: FastDFS服务运行异常,未监听到trackerd端口,storage端口:' + get_fdfs_storaged())
elif get_fdfs_storaged() == '':
print('>>>ERROR<<: FastDFS服务运行异常,未监听到storage端口,tracker端口:' + get_fdfs_trackerd())
else:
print('>>>ERROR<<<: FastDFS服务可能不存在或已宕机,请立即检查!')
if get_openfire() != '':
print('>>> Openfire服务运行正常! 端口:' + get_openfire())
else:
print('>>>ERROR<<<: Openfire服务可能不存在或已宕机,请立即检查!')
if get_es() != '':
print('>>> elasticsearch服务运行正常!端口未知!请手动查看!')
else:
print('>>>ERROR<<<: elasticsearch服务可能不存在或已宕机,请立即检查!')
def get_service():#调用单个服务函数的方法
try: #在用户输入当中可能会发生的异常处理
service = input("===输入服务名查看状态(all:查看全部服务状态):").lower()
if service == 'tomcat':
if get_tomcat() == '38080':
print('>>>Tomcat 服务运行正常! 端口:38080')
else:
print('>>>ERROR<<<: Tomcat服务可能不存在或已宕机,请立即检查!')
elif service == 'nginx':
if get_nginx() == 'master':
print('>>> Nginx 服务运行正常!端口:' + get_nginx_port())
else:
print('>>>ERROR<<<: Nginx 服务可能不存在或已宕机,请立即检查!')
elif service == 'redis':
if get_redis() != '':
print('>>> Redis 服务运行正常! 端口:' + get_redis())
else:
print('>>>ERROR<<<: Redis 服务可能不存在或已宕机,请立即检查!')
elif service == 'mysql':
if get_mysql() != '':
print('>>> Mysql 服务运行正常! 端口:' + get_mysql())
else:
print('>>>ERROR<<<: Mysql 服务可能不存在或已宕机,请立即检查')
elif service == 'mq':
if get_mq() != '':
print('>>> apache-MQ服务运行正常! 端口:' + get_mq())
else:
print('>>>ERROR<<: apache-MQ服务可能不存在或已宕机,请立即检查!')
elif service == 'fdfs' or service == 'fastdfs':
if get_fdfs_trackerd() and get_fdfs_storaged() != '':
print('>>> FastDFS服务运行正常! tracker端口:' + get_fdfs_trackerd() + ' ' + 'storage端口:' + get_fdfs_storaged())
elif get_fdfs_trackerd() == '':
print('>>>ERROR<<: FastDFS服务运行异常,未监听到trackerd端口,storage端口:' + get_fdfs_storaged())
elif get_fdfs_storaged() == '':
print('>>>ERROR<<: FastDFS服务运行异常,未监听到storage端口,tracker端口:' + get_fdfs_trackerd())
else:
print('>>>ERROR<<<: FastDFS服务可能不存在或已宕机,请立即检查!')
elif service == 'openfire':
if get_openfire() != '':
print('>>> Openfire服务运行正常! 端口:' + get_openfire())
else:
print('>>>ERROR<<<: Openfire服务可能不存在或已宕机,请立即检查!')
elif service == 'es' or service == 'elasticsearch':
if get_es() != '':
print('>>> elasticsearch服务运行正常!端口未知!请手动查看!')
else:
print('>>>ERROR<<<: elasticsearch服务可能不存在或已宕机,请立即检查!')
elif service == 'all':
all_service()
else:
print('[ERROR]:您可能输入了一个错误的服务名!!!(进程已退出)')
except KeyboardInterrupt:
print('用户已暴力结束进程,输入中断!')
try: #判断获取函数方法调用是否有异常
get_service()
except Exception as e:
print('[ERROR]:执行错误:调用 “get_service()” 函数失败!')
执行结果如下:
感谢使用!
更多推荐
已为社区贡献2条内容
所有评论(0)