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 ''' zabbix登录类,获取zabbix token ''' import jsonimport requestsclass 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