首页 > 解决方案 > 无法使用请求库 python 检索 api 令牌

问题描述

我正在尝试使用 requests API 登录 Zabbix API,但由于以下问题而无法登录。

我想通过pyzabbix模块实现登录,但我想使用API​​用户认证令牌。

代码中没有密码和用户名(任何建议都会对我有所帮助)。

错误:

json.decoder.JSONDecodeError:期望值:第 1 行第 1 列(字符 0)

代码:

import requests
from pprint import pprint
import json


url = 'http://127.0.0.1/zabbix'

########################################
# user.login
########################################
payload = {
    "jsonrpc" : "2.0",
    "method" : "user.login",
    "params": {
      'user': 'Admin',
      'password':'Zabbix',
    },
    "auth" : None,
    "id" : 0,
}
headers = {
    'content-type': 'application/json',
}
res  = requests.post(url, data=json.dumps(payload), headers=headers)
print(res)
res = res.json()
print('user.login response: ',res['result'])

标签: pythonapi

解决方案


如果你想调用 Zabbix API,你必须使用正确的端点,即api_jsonrpc.php.

因此,例如,您可以使用:

url = 'http://127.0.0.1/api_jsonrpc.php'

但是您的代码不考虑错误(即:如果 Admin/Zabbix 错误,您的脚本将返回一个关键错误,因为错误响应不包含result.

更好的选择是使用py-zabbix之类的库


推荐阅读