调用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, '') for i in x.split('.')] ), ''.join( [ i.rjust(3, '') 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 + '\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)

调用zabbix 分组api的更多相关文章

  1. python 调用zabbix api接口实现主机的增删改查

    python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数. 函数说明: zabbixtools()  调用zabbi ...

  2. python 调用zabbix api实现查询主机信息,输出所有主机ip

    之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python ...

  3. 关于python调用zabbix api接口

    因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...

  4. python调用zabbix接口实现Action配置

    要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...

  5. zabbix java api

    zabbix java api zabbix官方的api文档地址:https://www.zabbix.com/documentation/3.0/manual/api Zabbix功能 概观 Zab ...

  6. Python3调用Hadoop的API

    前言: 上一篇文章 我学习使用pandas进行简单的数据分析,但是各位...... Pandas处理.分析不了TB级别数据的大数据,于是再看看Hadoop. 另附上人心不足蛇吞象 对故事一的感悟:   ...

  7. zabbix利用api批量添加item,并且批量配置添加graph

    关于zabbix的API见,zabbixAPI 1item批量添加 我是根据我这边的具体情况来做的,本来想在模板里面添加item,但是看了看API不支持,只是支持在host里面添加,所以我先在一个ho ...

  8. C#调用百度地图 api

    转  http://blog.csdn.net/kkkkkxiaofei/article/details/8663377 这一篇,记录一下我调用的地图API实现的功能.下面介绍的都是一些片段的节选,不 ...

  9. 关于c#调用java中间件api的几个问题

    由于项目需要,做的c#客户端数据库连接串首先肯定不能写死的程序里(数据库很容易被攻击,我们的项目半年改了几次密码...) 放置在配置文件内,都可以看得到,最开始想法将配置文件加密,老师说加密过的文件还 ...

随机推荐

  1. angular7 + d3 显示svg

    汇总一些之前没有注意到的问题 总体思路: app只是显示svg为主,接收后端推送的数据改变,显示变化后的svg. 因此,只用d3的数据绑定更新组件里<svg></svg>节点. ...

  2. Word Ladder(双向BFS)

    2018-10-02 23:46:38 问题描述: 问题求解: 显然是个解空间遍历问题,每次修改其中一位,由于步长是1,所以可以使用BFS进行解空间的遍历.

  3. idea maven环境下 java实现发送邮件验证

    1.开通smtp授权 QQ邮箱-设置-账户-开启 得到一个授权码 2.下载javax.email包 maven项目中 pom文件加入: <dependency> <groupId&g ...

  4. English trip V1 - B 2. May I Help You? 它是多少钱? Teacher:Lamb Key:

    In this lesson you will learn to ask for things in shops  这节课您将学习如何在商店中寻找东西 课上内容(Lesson) 你通常去哪里购物? W ...

  5. Linux中符号总结

    常用符号~   登陆用户当前的家目录 .   当前目录..   当前目录的上一级目录cd -   返回上一次的目录;   命令分隔符#   表示注释 ?   通配符中表示任意一个字符*   通配符中表 ...

  6. asp.net网站服务器搭建之从零开始

    asp.net网站服务器搭建之从零开始 一 IIS(Internet Information Services)安装:  1.选择"控制面板".  2.点"添加或删除程序 ...

  7. Confluence 6 创建一个项目空间

    火星移民小组的程序需要一个地方能够调出他们任务的相关关键信息和资源,你的任务就是帮助他们实现和管理这个需求.这部分是比较容易实现的,因为这些信息需要让空间项目组中完全可见. 这样的话,你就可以设置项目 ...

  8. 1. windows 下redis数据库的安装

    安装 window系统的redis是微软团队根据官方的linux版本高仿的 官方原版: https://redis.io/ 中文官网:http://www.redis.cn 下载地址: https:/ ...

  9. Linux命令详解-file

    file命令用来识别文件类型,也可用来辨别一些文件的编码格式.它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的. 1.命令格式: file [ -bchikL ...

  10. dfs的一个小实现(啊哈算法的例题)

    给定n个盒子,将n个小球放进这些盒子里,判断都有多少种情况 写深度优先搜索最重要的是理解当前步怎么做,下一步就当系统已经帮你实现好了(因为只要写好当前步,下一步解决方法和当前步是一样的). #incl ...