最近在统计系统中都部署了什么服务,但服务器太多,在没有标准化之前进行整理,还是写脚本收集方便一些。
当然还是需要人工去判断整理表格,为后面标准化做准备。脚本是python2.7的,默认的centos系列都可以使用。
#!/usr/bin/python2.7
#coding=utf-8
#通过netstat -unltp命令收集监听端口,需要客户端安装net-tools
#获取当前运行的服务相关信息、PID号、端口号、服务名称、目录位置
import json, commands, string
import socket, sys
deny_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:
continue
if 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 +
" "
+ n
print("运行用户: "
+ 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 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。