最近在统计系统中都部署了什么服务,但服务器太多,在没有标准化之前进行整理,还是写脚本收集方便一些。
当然还是需要人工去判断整理表格,为后面标准化做准备。脚本是python2.7的,默认的centos系列都可以使用。

#!/usr/bin/python2.7#coding=utf-8#通过netstat -unltp命令收集监听端口,需要客户端安装net-tools#获取当前运行的服务相关信息、PID号、端口号、服务名称、目录位置import json, commands, stringimport socket, sysdeny_port = ["123", "22"]def get_port(): prostr = commands.getstatusoutput('netstat -unltp') prostr = str(prostr) prolist = prostr.split('\\n') #用两个\才行del prolist[0]del prolist[0] prolist = prolist[::-1] info_dict = {}for info in prolist: port_info = info.split()if len(port_info) >= 7: tmp_port = port_info[3].split(':') tmp_port = tmp_port.pop() tmp_info = port_info[6].split('/') tmp_pid = tmp_info[0]if tmp_port in deny_port:continueif tmp_pid in info_dict.keys(): port_list = info_dict[tmp_pid] port_list.append(tmp_port)else: info_dict[tmp_pid] = [tmp_port]return info_dict#根据字典循环去查询名称def tmp_name(info_dict): inq_bin = "ps -aux" prostr = commands.getstatusoutput(inq_bin) prostr = str(prostr) prolist = prostr.split('\\n')del prolist[0]for i in prolist: ps_info = i.split() ps_pid = ps_info[2] ps_name = ps_info[11:]print("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")def get_name(info_dict):#获取ps inq_bin = "ps -aux" prostr = commands.getstatusoutput(inq_bin) prostr = str(prostr) prolist = prostr.split('\\n')del prolist[0]for k, v in info_dict.items():print("PID号: " + k)print("监听的端口: " + v)for i in prolist: ps_info = i.split() ps_pid = ps_info[1]if k == ps_pid: ps_name = ""for n in ps_info[10:]: ps_name = ps_name + " " + nprint("运行用户: " + ps_info[0])print("服务名称: " + ps_name) exe_dir = "ls -l /proc/" + k + "/exe" exes = commands.getstatusoutput(exe_dir) exes = str(exes) exes_list = exes.split() cwd_dir = "ls -l /proc/" + k + "/cwd" cwds = commands.getstatusoutput(cwd_dir) cwds = str(cwds) cwds_list = cwds.split()print("目录位置: " + exes_list[11] + " 或者 " + cwds_list[11])print("+++++++++++++++++++++++++++++++++")info_dict = get_port()get_name(info_dict)原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。