thinkhk 发表于 2018-8-12 14:08:27

zabbix 自动发现 python

#!/usr/bin/python  
#coding=utf-8
  
import commands
  
import os,sys
  
##########返回命令执行结果
  
def getComStr(comand):
  
    try:
  
      stat, proStr = commands.getstatusoutput(comand)
  
    except:
  
      print "command %s execute failed, exit" % comand
  
    #将字符串转化成列表
  
    #proList = proStr.split("\n")
  
    return proStr
  

  
##########获取系统服务名称和监听端口
  
def filterList():
  
    tmpStr = getComStr("netstat -tpln")
  
    tmpList = tmpStr.split("\n")
  
    del tmpList
  
    newList = []
  
    for i in tmpList:
  
      val = i.split()
  
      del val
  
      del val
  
      #提取端口号
  
      valTmp = val.split(":")
  
      val = valTmp
  
      #提取服务名称
  
      valTmp = val.split("/")
  
      val = valTmp[-1]
  
      if val != '-' and val not in newList:
  
            newList.append(val)
  
    return newList
  

  
def main():
  
    netInfo = filterList()
  
    #格式化成适合zabbix lld的json数据
  
    json_data = "{\n" + "\t" + '"data":[' + "\n"
  
    #print netInfo
  
    for net in netInfo:
  
      if net != netInfo[-1]:
  
         json_data = json_data + "\t\t" + "{" + "\n" + "\t\t\t" + '"{#PPORT}":"' + str(net) + "\",\n" + "\t\t\t" + '"{#PNAME}":"' + str(net) + "\"},\n"
  
      else:
  
         json_data = json_data + "\t\t" + "{" + "\n" + "\t\t\t" + '"{#PPORT}":"' + str(net) + "\",\n" + "\t\t\t" + '"{#PNAME}":"' + str(net) + "\"}]}"
  
    print json_data
  

  
if __name__ == "__main__":
  
    main()
页: [1]
查看完整版本: zabbix 自动发现 python