python使用zabbix的API接口
一、实验环境
- python3.6.6
- zabbix 3.0.9
二、实验目的
- 了解Zabbix的API接口格式
- 通过python实现登陆zabbix服务,获得登陆token
- 通过python检索zabbix上的所有脚本
三、实验代码
import json import requests #zabbix的API地址 url = 'http://172.12.99.114/zabbix/api_jsonrpc.php' #zabbix的登陆API接口(python格式) data = { "jsonrpc": "2.0", "method": "user.login", "params": { "user": "Admin", "password": "zabbix" }, "id": 1, "auth": None, } #一定要定义请求头的Content-Type为json格式 headers = { 'Content-Type': 'application/json-rpc' } #数据json化,zabbix端接收j'son格式 json_data = json.dumps(data) #请求zabbix的api的token,及返回的result字段里的内容 res = requests.post(url,data=json_data,headers=headers) #收到的内容json-->dict格式 res_data_dic=json.loads(res.text) #检测服务端相应的内容里,是否还有key里有result字段 is_success=res_data_dic.get('result') if is_success: #reulst对应的value就是token,之后请求其他API接口,带着此token,就不用在重新登陆 auth_token=is_success else: print('用户名或者密码错误,错误代码:%s'%res_data_dic.get('error').get('data')) #定义检索脚本的API的请求报文 data2={ "jsonrpc": "2.0", "method": "script.get", "params": { "output": "extend" }, "auth": auth_token, "id": 1 } #讲字典转换成j'son格式,用于传输到zabbix服务端 json_data2 = json.dumps(data2) res2 = requests.post(url,data=json_data2,headers=headers) res_data_dic = json.loads(res2.text) for line in res_data_dic.get('result'): print(line) #将字典转化成json格式,indent参数使用缩进3,漂亮打印,默认是紧凑排列 res2_json = json.dumps(res_data_dic,indent=3) print(res2_json)
四、部分截图