1. 程式人生 > >Zabbix+Python自動發現進程端口和進程名稱

Zabbix+Python自動發現進程端口和進程名稱

env debug proc str RoCE srv items read 腳本

Python腳本

#!/usr/bin/env python
#coding=utf-8
#Debug in Python2.7
#used for discovery the Listen Port and Process
#Author wangshisheng 20180602

import os
import json
import string

t = os.popen(""" sudo ss -tunlp |grep LISTEN |sed "s#::#FF#g" |grep users |sort |uniq """)

array = []
for port in t.readlines():
 r=port.strip()

 #print r
 port = r.split(‘:‘)[1].split(‘ ‘)[0]
        try:
     name = r.split(‘\"‘)[1]
        except:
            name = "none"

 cluster = {}
        cluster[‘{#TCP_PORT}‘] = port
        cluster[‘{#TCP_NAME}‘] = name

        array.append(cluster)

#amy = [{k:v} for k,v in dict([list(d.iteritems())[0] for d in array]).iteritems()] 
amy = [dict(t) for t in set([tuple(d.items()) for d in array])]

print json.dumps({‘data‘:amy},sort_keys=True,indent=4,separators=(‘,‘,‘:‘))

運行結果如下

{
    "data":[
        {
            "{#TCP_NAME}":"srv.User.plus",
            "{#TCP_PORT}":"6049"
        },
        {
            "{#TCP_NAME}":"zabbix_agentd",
            "{#TCP_PORT}":"10050"
        }
    ]
}

Zabbix+Python自動發現進程端口和進程名稱