zoukankan      html  css  js  c++  java
  • 调用zabbix 分组api

    调用zabbix 分组api,获取分组中主机host信息,并分类保存,

    #!/usr/bin/env python
    #coding:utf8
    import requests
    import json
    import os
    #定义url头部信息
    headers = {'Content-Type': 'application/json-rpc'}
    #zabbix地址
    server_ip = '10.37.149.109' #zabbix url url = 'http://%s/zabbix/api_jsonrpc.php' %server_ip #获取token def getToken(username,passwd): #url = 'http://%s/zabbix/api_jsonrpc.php'%server_ip #headers = {'Content-Type': 'application/json-rpc'} username = 'admin' passwd = 'zabbix' data = { "jsonrpc": "2.0", "method": "user.login", "params": { "user": username, "password": passwd }, "id": 0 } request = requests.post(url=url,headers=headers,data=json.dumps(data)) dict = json.loads(request.text) return dict['result'] # 获取groupID def getGroupid(token_num): group = {} data = {"jsonrpc": "2.0", "method":"hostgroup.get", "params":{ "output":["groupid","name"] }, "auth":token_num, "id": 0 } request = requests.post(url=url,headers=headers,data=json.dumps(data)) dict = json.loads(request.content) for i in dict['result']: groupid = i['groupid'] name = i['name'] group[name] = groupid return group # 获取group中的hosts信息 def getHost(token_num,group): dict_group = { } for k in group.keys(): groupid = group[k] data = { "jsonrpc":"2.0", "method":"host.get", "params":{ "output":["hostid","name"], "selectInterfaces": [ "interfaceid", "ip" ], "groupids":groupid }, "auth":token_num, "id":1, } request = requests.post(url=url,headers=headers,data=json.dumps(data)) hosts = json.loads(request.content) hosts1 = hosts['result'] ip_lists = getProc(hosts1) dict_group[k]=ip_lists return dict_group # host ip排序 def getProc(hosts): list = hosts ip_lists = [ ] if list: for i in list: host = i['name'] inter = i['interfaces'] for j in inter: ip = j['ip'] ip_lists.append(ip) ip_lists.sort(lambda x,y: cmp(''.join( [ i.rjust(3, '0') for i in x.split('.')] ), ''.join( [ i.rjust(3, '0') for i in y.split('.')] ) )) return ip_lists # 进行ip组分类(同网段为一组) def splitIp(ip): ip_split = ip.split('.') ip_class = ip_split[0:-1] return ip_class # 进行ip组分类, def getIp(dict_group): dicGroupIp = {} dicIp = {} ip_l = [] for group,ip_list in dict_group.items(): for ip in ip_list: ip_class = splitIp(ip) ip_group ='.'.join(ip_class) if ip_group not in dicIp: ip_l.append(ip) dicIp[ip_group] = ip_l else: dicIp[ip_group].append(ip) ip_l = [ ] dicGroupIp[group] = dicIp dicIp = { } return dicGroupIp # 分别创建group组文件将ip地址写入。 def writrIpfile(dicGroupIp): for group_class,group_dic in dicGroupIp.items(): ip_path = os.path.join('/python/zabbix2',group_class ) with open(ip_path,'w')as fd: for ip_class,ip_list in group_dic.items(): ip_class = '[' + ip_class + ']' #with open(ip_path,'a')as fd: fd.write(ip_class + ' ') for i in ip_list: fd.write(i + ' ') if __name__ == "__main__": #server_ip = 'zmonitor.enn.cn' username = 'admin' passwd = 'zabbix' token_num = getToken(username,passwd) group = getGroupid(token_num) dict_group = getHost(token_num,group) dicIp = getIp(dict_group) writrIpfile(dicIp)
    不要让以后的自己被嫌弃
  • 相关阅读:
    POJ 3468 A Simple Problem with Integers
    BZOJ 4430 Guessing Camels
    POJ 2309 BST
    POJ 1990 MooFest
    cf 822B Crossword solving
    cf B. Black Square
    cf 828 A. Restaurant Tables
    Codefroces 822C Hacker, pack your bags!
    [HDU 2255] 奔小康赚大钱
    [BZOJ 1735] Muddy Fields
  • 原文地址:https://www.cnblogs.com/wxp997/p/7002227.html
Copyright © 2011-2022 走看看