一、实验环境
二、实验目的
- 了解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)
四、部分截图
![](https://img2018.cnblogs.com/blog/1368251/201812/1368251-20181205151541838-1749734842.png)