调用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, '') 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的更多相关文章
- python 调用zabbix api接口实现主机的增删改查
python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数. 函数说明: zabbixtools() 调用zabbi ...
- python 调用zabbix api实现查询主机信息,输出所有主机ip
之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python ...
- 关于python调用zabbix api接口
因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...
- python调用zabbix接口实现Action配置
要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...
- zabbix java api
zabbix java api zabbix官方的api文档地址:https://www.zabbix.com/documentation/3.0/manual/api Zabbix功能 概观 Zab ...
- Python3调用Hadoop的API
前言: 上一篇文章 我学习使用pandas进行简单的数据分析,但是各位...... Pandas处理.分析不了TB级别数据的大数据,于是再看看Hadoop. 另附上人心不足蛇吞象 对故事一的感悟: ...
- zabbix利用api批量添加item,并且批量配置添加graph
关于zabbix的API见,zabbixAPI 1item批量添加 我是根据我这边的具体情况来做的,本来想在模板里面添加item,但是看了看API不支持,只是支持在host里面添加,所以我先在一个ho ...
- C#调用百度地图 api
转 http://blog.csdn.net/kkkkkxiaofei/article/details/8663377 这一篇,记录一下我调用的地图API实现的功能.下面介绍的都是一些片段的节选,不 ...
- 关于c#调用java中间件api的几个问题
由于项目需要,做的c#客户端数据库连接串首先肯定不能写死的程序里(数据库很容易被攻击,我们的项目半年改了几次密码...) 放置在配置文件内,都可以看得到,最开始想法将配置文件加密,老师说加密过的文件还 ...
随机推荐
- Altium Designer PCB画板-交互式布局与模块化布局
交互式布局 (1)为了达到原理图与PCB两两交互,需要在原理图界面和PCB界面都执行菜单命令“Tools-Cross Select Mode”,选择交互按钮
- 异常上报工具:腾讯Bugly
1.腾讯出了一个和umeng差不多的异常上报工具Bugly.(传送门:https://bugly.qq.com/docs/) (1)两者比较明显的区别是,Bugly能比较实时上报异常信息,经过测试基本 ...
- 第 8 章 容器网络 - 052 - overlay 如何实现跨主机通信?
overlay 如何实现跨主机通信? 在 host2 中运行容器 bbox2: docker run -itd --name bbox2 --network ov_net1 busybox bbox2 ...
- 第 6 章 存储 - 044 - volume 生命周期管理
volume 生命周期管理 1)备份 因为 volume 实际上是 host 文件系统中的目录和文件,所以 volume 的备份实际上是对文件系统的备份 例如:本地的Registry,所有镜像都存在/ ...
- 池建强 Mac Tips
摘自<MacTalk 人生元编程>,原文有130条,从中摘录出7条:大部分与 Terminal 相关 1. 终端说英语 在终端输入 " say hello" ,Mac ...
- 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形网格动态加载
jQuery EasyUI 树形菜单 - 树形网格动态加载 动态加载树形网格有助于从服务器上加载部分的行数据,避免加载大型数据的长时间等待.本教程将向您展示如何创建带有动态加载特性的树形网格(Tree ...
- (GoRails)在导航栏增加自动的搜索功能(jquery插件:easyautocomplete)(gem 'ransack' 搜索对象4000✨)
Global Autocomplete Search 需要用到一个JQuery插件和一个搜索对象的gem EasyAutocomplete jQuery插件: https://github.com/p ...
- hdu-6035 Colorful Tree
题目意思是计算所有路径(n*(n-1)/2)经过的不同颜色的数目和. 这个数目和可以转化为每种颜色经过的路径数目的求和,而这个求和又等价于颜色总数*n*(n-1)/2-没有经过某种颜色的边的数量的求和 ...
- vue 监听store中的数值
computed: { isFollow () { return this.$store.state.demo.id; //需要监听的数据 } }, watch: { isFo ...
- python 小练习4
给你一个整数list L, 如 L=[2,-3,3,50], 求L的一个连续子序列,使其和最大,输出最大子序列的和. 例如,对于L=[2,-3,3,50], 输出53(分析:很明显,该列表最大连续子序 ...