调用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#客户端数据库连接串首先肯定不能写死的程序里(数据库很容易被攻击,我们的项目半年改了几次密码...) 放置在配置文件内,都可以看得到,最开始想法将配置文件加密,老师说加密过的文件还 ...
随机推荐
- cocos2dx spine之二 :spine变色
cocos2dx版本为3.10 1.具体原理和代码可以参考博文<利用shader改变图片色相Hue>,下面的代码根据该博文进行整理优化. 基本原理就是将RGB值转换为HSL值后加上输入的H ...
- dataway_代码规范
无论何时无论何地,只要写代码,请遵从这样的规范. ----------------------------------------------------------------- css代码规范. ...
- 20165303 魏煜第四次实验 Android开发
实验内容 1实验要求: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章: 参考http://www.cnblog ...
- @suppresswarnings(unchecked)的作用
@suppresswarnings(unchecked)的作用 一般在项目中会出现红色的报错,这个是影响项目运行的,无法启动,会停在那里,而warning警告,黄色的虽然不是会让项目停止,但是却是不规 ...
- C#特性-表达式树
表达式树ExpressionTree 表达式树基础 转载需注明出处:http://www.cnblogs.com/tianfan/ 刚接触LINQ的人往往觉得表达式树很不容易理解.通过这篇文章我希 ...
- Python自学:第二章 数字 整数
>>>2 + 3 5 >>>3 - 2 1 >>>3 * 2 6 >>>3 / 2 1.5
- p2693 Combination Lock
深搜,注意模n.用set去重. #include <iostream> #include <cstdio> #include <cmath> #include &l ...
- python记录_day17 类与类之间的关系
一.依赖关系 a类的对象是b类方法的参数 这种关系是我用着你,但你不属于我,比如公司和临时工的关系,是很弱的一种关系 class Zhiwu: def __init__(self,name,atk): ...
- Selenium-WebDriver驱动对照表
Chrome 对于chrome浏览器,有时候会有闪退的情况,也许是版本冲突的问题,我们要对照着这个表来对照查看是不是webdriver和chrome版本不对 chromedriver版本 支持的Chr ...
- php值传递和引用传递
1,参数传值方式有两种,第一种是值传递,第二种引用传递.值传递比较简单,也就是在php中,数组是当一个普通变量,值传递是要一个实参的一个拷贝副本,跟实参无关,而引用传递后可以改变实参的值而类的对象是无 ...