一.简介

最近在统计系统中都部署了什么服务,但服务器太多,在没有标准化之前进行整理,还是写脚本收集方便一些。

当然还是需要人工去判断整理表格,为后面标准化做准备。脚本是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)

py脚本 获取当前运行服务的相关信息的更多相关文章

  1. SQL-58 获取有奖金的员工相关信息。

    题目描述 获取有奖金的员工相关信息.CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`fi ...

  2. 根据funID,personID获取最新规划包项目相关信息

    1.定义:根据funID,personID获取最新规划包项目相关信息(code projecttype(阶段) Pname(code+name) projectID) 项目表tbl_cfg_Proje ...

  3. C# 获取进程或线程的相关信息

    信息来自: http://blog.163.com/kunkun0921@126/blog/static/169204332201293023432113/ using System; using S ...

  4. (转载)获取当前运行的PHP版本信息

    (转载)http://www.clovery.org/get-the-php-version-information.html 获取PHP运行环境信息,可以使用下面的函数. <?php phpi ...

  5. MSCRM 获取列表所选记录相关信息

    问题:如何通过JS获取列表中所选记录信息? 解决办法: The CRM2011 Ribbon has a special set of parameters called 'CrmParameters ...

  6. Dokcerfile部署webpy,安装imagehash库并运行py脚本获取图片dhash值

    Dockerfile FROM lmurawsk/python2.7 RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple image ...

  7. JAVA如何利用Swiger获取Linux系统电脑配置相关信息

    最近开发java应用程序,涉及到获取Linux服务器相关配置的问题,特地网上搜寻了下,采用Swiger包可以直接获取,再次小结一下,以便于以后能方便使用,也便于其他童鞋们学习. 推荐大家参考链接:ht ...

  8. asp.net 获取服务器及客户端的相关信息

    1. 在ASP.NET中专用属性:获取服务器电脑名:Page.Server.ManchineName获取用户信息:Page.User获取客户端电脑名:Page.Request.UserHostName ...

  9. 用js获取当前页面的url的相关信息方法

    当前页面对应的URL的一些属性: ( http://bbs.xxx.net/forum.php?mod=viewthread&tid=2709692&page=1&extra= ...

随机推荐

  1. oracle 连接数据库并查询,返回List<Map<String, Object>> 数据

    package JDBC; import java.sql.Clob; import java.sql.Connection; import java.sql.DriverManager; impor ...

  2. Matplotlib (一)

    Matplotlib 用于 创建出版质量图标的绘图工具库 目的是为python构建一个 Matlab 式的绘图接口 import matplotlib.pyplot as plt pyplot 模块包 ...

  3. 如何使用原生的Hystrix

    什么是Hystrix 前面已经讲完了 Feign 和 Ribbon,今天我们来研究 Netflix 团队开发的另一个类库--Hystrix. 从抽象层面看,Hystrix 是一个保护器.它可以保护我们 ...

  4. Maven 依赖调解源码解析(二):如何调试 Maven 源码和插件源码

    本文是系列文章<Maven 源码解析:依赖调解是如何实现的?>第二篇,主要介绍如何调试 Maven 源码和插件源码.系列文章总目录参见:https://www.cnblogs.com/xi ...

  5. [loj2850]无进位加法

    (似乎漏了一个数据范围,cf上的题面中还有$\sum L\le 3\cdot 10^{5}$) 考虑$a_{i}=2^{k_{i}}$时(不妨$k_{1}\ge k_{2}\ge ...\ge k_{ ...

  6. 同时在多个 Git 分支上工作,老板要榨干我

    背景 上一篇文章 保持清洁的Git提交记录,三招就够了 ,大家看过后有私下留言说这是非常好用的功能,我突然想到工作中用到的另外一个 Git 功能那也是相当好用,必须全盘托出 作为程序员的我们应该都有一 ...

  7. String和其他数据类型

    1.String类. 1.1.对String在内存存储方面的理解: 第一:字符串一旦创建不可变. 第二:双引号括起来的字符串存储在字符串常量池中. 第三:字符串的比较必须使用equals方法. 第四: ...

  8. springboot配置自动提示插件-IDEA

    社区版的IDEA编辑spring boot项目的properties或者yml文件不会自动提醒.可手动安装IDEA的插件解决. Setting >> Plugins >> 搜索 ...

  9. pycahrm下载

    下载地址: https://www.jetbrains.com/pycharm/download/#section=windows 下载社区版本,不用破解,可以直接使用

  10. exCRT & 骆克强乘法

    exCRT & 骆克强乘法 只是丢两个板子啦. exCRT的做法就是每次拿两个方程合并成一个,合并的过程推下式子就是个 exgcd.具体可以在 zjk 的 ptt 里面找到. 先放个 $ O( ...