[原创]Zabbix3.4_API的python示例
说明:
1.python版本为:python2.7
2.zabbix版本为:zabbix3.4
3.通过python脚本调用zabbix的api接口可以实现批量增删改查主机的信息。
示例如下:
#-*- coding:utf-8 -*- import requests, json #初始化参数
server_url = "http://zabbix3.test.com/api_jsonrpc.php"
header = {"Content-Type": "application/json"}
username = "Admin"
password = "passwd123" #登录zabbix并获取auth的token
login = {
"jsonrpc" : "2.0",
"method" : "user.login",
"params": {
'user': ""+username+"",
'password': ""+password+"",
},
"auth" : None,
"id" : 0,
}
auth = requests.post(server_url, data=json.dumps(login), headers=(header))
auth = auth.json() #跟进ip地址获取主机的hostid
host_get = {
"jsonrpc":"2.0",
"method":"host.get",
"params":{
"output":["hostid","name"],
"filter":{"ip":["192.168.5.1","192.168.5.2"]}
},
"auth":""+auth['result']+"",
"id":1,
}
hostid_get = requests.post(server_url, data=json.dumps(host_get), headers=(header))
hostid_get = hostid_get.json()
hostid = hostid_get['result'][0]['hostid']
print hostid,hostid_get['result'][1]['hostid'] #根据组名获取groupid
group_get = {
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": "extend",
"filter": {
"name": [
"测试组"
]
}
},
"auth":""+auth['result']+"",
"id": 1
}
groupid_get = requests.post(server_url, data=json.dumps(group_get), headers=(header))
groupid_get = groupid_get.json()
groupid = groupid_get['result'][0]['groupid']
print groupid #跟进模板名来获取templateid
template_get = {
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend",
"filter": {
"host": [
"Template OS Linux",
]
}
},
"auth":""+auth['result']+"",
"id": 1
}
templateid_get = requests.post(server_url, data=json.dumps(template_get), headers=(header))
templateid_get = templateid_get.json()
templateid = templateid_get['result'][0]['templateid']
print templateid #跟进proxy名获取proxyid
proxy_get = {
"jsonrpc": "2.0",
"method": "proxy.get",
"params": {
"output": "extend",
"selectInterface": "extend",
"filter": {
"host": [
"Zabbix-proxy-test",
]
}
},
"auth": ""+auth['result']+"",
"id": 1
}
proxy_get_id = requests.post(server_url, data=json.dumps(proxy_get), headers=(header))
proxy_get_id = proxy_get_id.json()
proxyid = proxy_get_id['result'][0]['proxyid']
print proxyid #定义并添加一个主机到zabbix,指定组,模板,host和name名不支持中文
host_create = {
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "192.168.5.1",
"name": "this is a test-192.168.5.1",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.5.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": ""+groupid+""
}
],
"templates": [
{
"templateid": ""+templateid+""
}
],
"proxy_hostid": ""+proxyid+"",
"inventory_mode": 0
},
"auth":""+auth['result']+"",
"id": 1
}
host_create_id = requests.post(server_url, data=json.dumps(host_create), headers=(header))
host_create_id = host_create_id.json()
print host_create_id #跟进hostid删除主机
host_delete = {
"jsonrpc": "2.0",
"method": "host.delete",
"params": [hostid],
"auth":""+auth['result']+"",
"id": 1
}
delete_id = requests.post(server_url, data=json.dumps(host_delete), headers=(header))
deleteid = delete_id.json()
print deleteid
[原创]Zabbix3.4_API的python示例的更多相关文章
- python 示例代码1
第一章 python基础一 在此不再赘述为什么学习python这门编程,网上搜索一箩筐.我在此仅说一句python的好,用了你就会爱上它. 本python示例代码1000+带你由浅入深的了解pyth ...
- python 示例代码3
示例3:Python获取当前环境下默认编码(字符编码demo1.py) 字符编码,python解释器在加载py文件中的代码时,会对内容进行编码(默认ASCII),windows系统默认编码为GBK,U ...
- 安装zeromq以及zeromq的python示例
下载ZeroMq: wget https://github.com/zeromq/zeromq4-1/releases/download/v4.1.5/zeromq-4.1.5.tar.gz 解压: ...
- 【原创】编写多线程Python爬虫来过滤八戒网上的发布任务
目标: 以特定语言技术为关键字,爬取八戒网中网站设计开发栏目下发布的任务相关信息 需求: 用户通过设置自己感兴趣的关键字或正则表达式,来过滤信息. 我自己选择的是通过特定语言技术作为关键字,php.j ...
- [原创]一种基于Python爬虫和Lucene检索的垂直搜索引擎的实现方法介绍
声明:本文首发在博客园晨星落羽,Shulin_Cao和lvmememe首页,转载请注明出处. 前言 2016.5到2017.5,我们三人(lvmememe,Shulin_Cao,晨星落羽)共同完成了一 ...
- Python示例
http request:put # 定义函数:refresh segement # curl -X PUT -s --user "****:*****" -H 'Content- ...
- C++调Python示例(转载)
C++调Python,代码粘贴如下: #include <iostream> #include <Python.h> using namespace std; void Hel ...
- 【原创】cython and python for kenlm
未经允许不可转载 Kenlm相关知识 Kenlm下载地址 kenlm中文版本训练语言模型 如何使用kenlm训练出来的模型C++版本 关于Kenlm模块的使用及C++源码说明 加载Kenlm模块命令 ...
- zabbix3.4用Python脚本Excel批量导入主机
1.安装xlrd读取Excel文件 1.1. 下载setuptools-38.2.4.zip,上传至zabbix服务器解压安装,下载地址:https://pypi.python.org/package ...
随机推荐
- 你需要了解的 C++ 17 Top 19 新特性(附精彩评论)
什么是 C++17? C++17(或 C++1z)是继 C++14 之后 C++ 编程语言 ISO/IEC 标准的下一次修订的非正式名称.C++17 现在功能已齐全,正在成为国际标准的路上.它的规范已 ...
- iostat命令浅析
报告中央处理器(CPU)统计信息.整个系统.适配器.TTY 设备.磁盘 CD-ROM.磁带和文件系统的异步输入/输出(AIO)与输入/输出统计信息,iostat也有一个弱点,就是它不能对某个进程进行深 ...
- PRML Chapter4
超平面(hyperplane) 超平面:超平面是n维欧氏空间中余维度等于一的线性子空间,也就是说必须是(n-1)维度.这是平面中的直线.三维空间中平面的推广(n大于3才被称为"超" ...
- 如何设计出和 ASP.NET Core 中 Middleware 一样的 API 方法?
由于笔者时间有限,无法写更多的说明文本,且主要是自己用来记录学习点滴,请谅解,下面直接贴代码了(代码中有一些说明): 01-不好的设计 代码: using System; namespace Desi ...
- Sailfish OS 2.1.0 发布,带来重大的架构变化
Sailfish OS 2.1.0 Iijoki 发布了. Iijoki通过引入Qt 5.6 UI框架.BlueZ 5 蓝牙堆栈和 64 位架构的基本实现,为Sailfish操作系统带来了重大的架构变 ...
- Qt5---ftp上传功能(可直接克隆某个小模块,查看QT下FTP的socket原理)
http://blog.csdn.net/freeape/article/details/52802163
- Qt4学习笔记 (7) 本篇说一下Qt对于脚本的支持, 即QtScript模块.
本篇说一下Qt对于脚本的支持, 即QtScript模块. Qt支持的脚本基于ECMAScript脚本语言, 这个东西又是javascript, jscript的基础. 所以, 一般只要学过javasc ...
- Java代码消除switch/case,if/else语句的几种实现方式
转自:https://my.oschina.net/stefanzhlg/blog/372413 我们在平时的编码中,我们经常会遇到这样的情况: 使用过多的switch/case 或者 if else ...
- Spring如何解决循环引用
概念 什么是循环引用? 故名思义,多个对象形成环路. 有哪几种循环引用? 在Spring中存在如下几种循环引用,一一举例分析一下 注入循环引用(Set注入 注解注入) package c.q.m; i ...
- 机器学习之支持向量机原理和sklearn实践
1. 场景描述 问题:如何对对下图的线性可分数据集和线性不可分数据集进行分类? 思路: (1)对线性可分数据集找到最优分割超平面 (2)将线性不可分数据集通过某种方法转换为线性可分数据集 下面将带着这 ...