Contents

不知为什么自己挖坑说想把zabbix的监控展示在微信企业号。。。不知能不能填啊。。。一点一点来吧
今天记录一下关于zabbix的restAPI开发,首先我们要登录到zabbix
zabbix的restAPI会接收一个json格式的登录数据,通过这个json提交必要的username和password

1
2
3
4
5
6
7
8
9
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "username",
"password": "password"
},
"id": 0
}

zabbix的rest api入口是http://localhost/zabbix/api_jsonrpc.php

我们使用python的requests模块就能很方便的把这个json数据post到zabbix,如果成功就能返回登录的token,之后的操作带上这个token就能继续访问restAPI提供的各种数据接口。
我自己写的一个测试代码

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
31
32
33
34
35
36
37
38
#!/usr/bin/python
# coding=utf-8
'''
zabbix登录类,获取zabbix token
'''
import json
import requests
class zabbixToken(object):
def __init__(self, username = 'admin', password = 'admin' , zurl = ''):
self.__username = username
self.__password = password
self.__zurl = zurl

def _login_to_zabbix(self):
login_json = '''
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "%s",
"password": "%s"
},
"id": 0
}
''' % (self.__username, self.__password)
headers = {"Content-Type": "application/json"}
return requests.post(self.__zurl, data=login_json, headers=headers)

def get_token(self):
token = self._login_to_zabbix().json()['result']
return token

def main():
token = zabbixToken(username='admin', password='pass', zurl='http://localhost/zabbix/api_jsonrpc.php')
print 'zabbix token: ' + token.get_token()

if __name__ == '__main__':
main()

运行成功能得到token

Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32
Type “copyright”, “credits” or “license()” for more information.

=============== RESTART: D:\pyproject\zabbixwx\zabbixToken.py ===============
zabbix token: f26bb031ef648d8b13ff8d1a3714f480

Contents