前言:

以下内容根据zabbix 3.2官方文档总结:https://www.zabbix.com/documentation/3.2/manual/api

此文档只是简单的介绍API的基本使用,关于一些完整功能或高级功能将在后续的博文中展现

调用Zabbix api使用的是HTTP的POST请求方式

其中请求的头部为:

1
{"Content-Type""application/json-rpc"}

请求的URL为:

1
http://zabbix.aek.com/api_jsonrpc.php

如果url中包含目录需要把目录写上,如http://zabbix.aek.com/zabbix/api_jsonrpc.php,最后就是请求的数据(data),比如获取Token,创建主机,获取主机ID,获取模板ID,获取组ID,删除主机等。

接下以以Python调用 API为例,例出用法案例:

测试连接是否成功

 #!/usr/bin/python
#coding:utf:8 import requests
import json url = "http://zabbix.aek.com/zabbix/api_jsonrpc.php"
header = {"Content-Type": "application/json-rpc"}
data = {"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":None,"params":{}}
request = requests.post(url=url, headers=header, data=json.dumps(data))
print(request.content)

上面的data用来测试是否可连接成功,官方文档中auth的值为null,但在python中null用None表示,所以需要改成None。

成功后返回值大概如下:会显示zabbix版本

 {"jsonrpc":"2.0","result":"3.2.3","id":1}

获取Token

 #!/usr/bin/python
#coding:utf:8 import requests
import json url = "http://zabbix.aek.com/zabbix/api_jsonrpc.php"
header = {"Content-Type": "application/json-rpc"}
data = {"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": None
}
request = requests.post(url=url, headers=header, data=json.dumps(data))
print(request.content)

成功后返回值如下:会返回一个Token

 {"jsonrpc":"2.0","result":"391277f070a3ebc5b2afe9cf466cb74c","id":1}

最后以一个完整的Python脚本通过zabbix API获取所有主机的信息为例:

 #!/usr/bin/python
#coding:utf:8 import requests
import json class Zabbix: def __init__(self, url, header, username, password): self.url = url
self.header = header
self.username = username
self.password = password def getToken(self):
#获取Token并返回字符Token字符串 data = {"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": self.username,
"password": self.password
},
"id": 1,
"auth": None
}
token = requests.post(url=self.url, headers=self.header, data=json.dumps(data))
return json.loads(token.content)["result"] def getAllHost(self):
#获取所有主机信息 data = {"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host",
],
"selectGroups": "extend",
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": self.getToken()
}
hosts = requests.post(url=self.url, headers=self.header, data=json.dumps(data))
return json.loads(hosts.content)["result"] if __name__ == "__main__":
header = {"Content-Type": "application/json-rpc"}
url="http://zabbix.aek.com/zabbix/api_jsonrpc.php"
test = Zabbix(url=url, header=header, username="Admin", password="zabbix")
print(test.getAllHost())

zabbix API基本使用方法介绍的更多相关文章

  1. (50)zabbix API二次开发使用与介绍

    zabbix API开发库 zabbix API请求和响应都是json,并且还提供了各种语法的lib库,http://zabbix.org/wiki/Docs/api/libraries,包含php. ...

  2. PHP通过ZABBIX API获取主机信息 VS 直接从数据库获取主机信息

    最近项目需要获取linux主机的一些信息,如CPU使用率,内存使用情况等.由于我们本身就装了zabbix系统,所以我只用知道如何获取信息即可,总结有两种方法可以获取. 一.通过ZABBIX API获取 ...

  3. Zabbix概术及基础介绍(一)

    一.Zabbix介绍 Zabbix 是由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持.Zabbix 是一个企业级的分布式开源监控方案.Zabbix是一款能够监控各种 ...

  4. UploadifyAPI-上传插件属性和方法介绍

    上一篇文章简单的介绍了Uploadify上传插件的使用.但是对于常用的属性和方法并没有说明.授人以鱼不如授人以渔,我决定将常用的属性列举出来,供大伙参考参考.           Uploadify属 ...

  5. Zabbix Api的使用

    API使用 zabbix官网文档:https://www.zabbix.com/documentation/2.2/manual/api, Zabbix API是基于JSON-RPC 2.0规格,具体 ...

  6. Windows CE Notification API的使用方法

    1 引言      以Windows CE 为操作系统的掌上电脑(如PocketPC或HPC),除具备PC的功能外,还具备很强的自身控制能力.Windows CE API超越微软其他操作系统的 API ...

  7. 利用zabbix api添加、删除、禁用主机

    python环境配置yum -y install python-pip安装argparse模块pip install -i https://pypi.douban.com/simple/ argpar ...

  8. Python通过Zabbix API获得数据

    Zabbix API查询:https://www.zabbix.com/documentation/2.0/manual/appendix/api/api import json,urllib2 fr ...

  9. 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍

    爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,load ...

随机推荐

  1. Python scrapy框架

    Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...

  2. html<!DOCTYPE>声明标签

    html<!DOCTYPE>声明标签 <DOCTYPE>声明是html文档的第一行,位于<html>标签之前 <DOCTYPE>声明不是html标签,他 ...

  3. jQuery系列 第五章 jQuery框架动画特效

    第五章 jQuery框架动画特效 5.1 jQuery动画特效说明 jQuery框架中为我们封装了众多的动画和特效方法,只需要调用对应的动画方法传递合适的参数,就能够方便的实现一些炫酷的效果,而且jQ ...

  4. Linux OpenGL 实践篇-4 坐标系统

    OpenGL中顶点经过顶点着色器后会变为标准设备坐标系.标准设备坐标系的各坐标的取值范围是[-1,1],超过这个范围的点将会被剔除.而这个变换的过程可描述为顶点在几个坐标系统的变换,这几个坐标系统为: ...

  5. Python3 hasattr()、getattr()、setattr()、delattr()函数

    hasattr()函数 hasattr()函数用于判断是否包含对应的属性 语法: hasattr(object,name) 参数: object--对象 name--字符串,属性名 返回值: 如果对象 ...

  6. [LeetCode] Judge Route Circle 判断路线绕圈

    Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot m ...

  7. Centos常用命令之:ls和cd

    在使用centos这个linux系统的时候,我们总是免不了需要查看当前目录中的内容,需要切换到别的目录,新建删除等等一系列在window中非常普通的操作. 那在linux中这些操作是什么样的呢. 在l ...

  8. [NOI 2001]炮兵阵地

    Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图.在每一 ...

  9. [HNOI2010]STONE取石头游戏

    题目描述 A 公司正在举办一个智力双人游戏比赛----取石子游戏,游戏的获胜者将会获得 A 公司提供的丰厚奖金,因此吸引了来自全国各地的许多聪明的选手前来参加比赛. 与经典的取石子游戏相比,A公司举办 ...

  10. ●洛谷P2664 树上游戏

    题链: https://www.luogu.org/problemnew/show/P2664题解: 扫描线,线段树维护区间覆盖 https://www.luogu.org/blog/ZJ75211/ ...