0%

zabbix_api

可通过点击zabbix页面中的Help按钮打开官方文档。本篇以2.2版本为例。后续实例都是只修改post的数据而已,可能不会提供完整代码。

token

获取token

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# -*- coding: utf-8 -*-

import requests
import json


def do_request(formdata):
url = 'http://www.myzabbix.com/api_jsonrpc.php'
h = {
'Content-Type': 'application/json-rpc'
}
try:
r = requests.post(url, data=json.dumps(formdata), timeout=3, headers=h)
return r.text
except Exception:
return ''


formdata = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "xxxx",
"password": "xxxxxx",
},
"id": 1
}

response = do_request(formdata)
print(response)

运行结果:

1
{"jsonrpc":"2.0","result":"0424bd5xxxxxxxxxxxxxxxxxxxxxxxxx","id":1}

result中的32位串即为后续验证使用的token。

每次运行会获取到一个新的token,同时在有效期内的老token可以继续使用

token的过期

在web页面Profile - User - Auto-logout中配置自动登出,这个时间也是token的过期时间。如果不勾选,则会永久有效。

token

验证token

将上例代码中的formdata修改以下内容,测试auth token。

1
2
3
4
5
6
7
{
"jsonrpc": "2.0",
"method": "apiinfo.version",
"params": [],
"id": 1,
"auth": "0424bd5xxxxxxxxxxxxxxxxxxxxxxxxx"
}

输出结果

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

官方文档怎么看

通过上面例子我们大致能够看出来,调用api接口实现不同功能实际上是post不同的数据给api接口,而数据(json串)中需要修改的特性只有methodparams,不同method有不同的params,甚至params的值的类型都不同。

官方的api文档分成多个子模块,模块之间几乎没有关联,可以只看自己关注的模块。

子模块中>开头的模块可理解为对象通用特性,适用于此模块所有操作。

api

Appendix(附录)中有介绍各Type的含义。