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)

 

四、部分截图

 

posted @ 2018-12-05 15:17  森林326  阅读(1328)  评论(0编辑  收藏  举报