调用zabbix 分组api

【调用zabbix 分组api】宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述调用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-rpcusername = admin passwd = zabbix data = "https://www.songbingjia.com/android/jsonrpc": "2.0", "method": "user.login", "params": "user": username, "password": passwd , "id": 0request = requests.post(url=url,headers=headers,data=https://www.songbingjia.com/android/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": 0request = requests.post(url=url,headers=headers,data=https://www.songbingjia.com/android/json.dumps(data)) dict = json.loads(request.content) for i indict[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 ="https://www.songbingjia.com/android/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=https://www.songbingjia.com/android/json.dumps(data)) hosts = json.loads(request.content) hosts1 = hosts[result] ip_lists = getProc(hosts1) dict_group[k]=ip_listsreturn 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_lelse: 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 + //n) for i in ip_list:fd.write(i + //n) 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)



    推荐阅读