python - 无法使用请求库 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'])
解决方案
如果你想调用 Zabbix API,你必须使用正确的端点,即api_jsonrpc.php
.
因此,例如,您可以使用:
url = 'http://127.0.0.1/api_jsonrpc.php'
但是您的代码不考虑错误(即:如果 Admin/Zabbix 错误,您的脚本将返回一个关键错误,因为错误响应不包含result
.
更好的选择是使用py-zabbix之类的库
推荐阅读
- c - 即使我释放了所有分配的内存,也总是发生内存泄漏
- javascript - 制作一个名称字符串数组
- vue.js - 是否可以在导航栏中做动态标题?
- javascript - 亚马逊请求包的编码问题
- xml - 如何解析 XML 代码并获取所需的属性和值
- rest - 401/405 错误 Symfony 4 REST:Docker 上的 JWT API 身份验证(LexikJWTAuthenticationBundle)-ngnix
- c++ - 从有符号字符到整数的值初始化,过早提升?
- ios - 以无线方式将 ARSCNView 从 iOS 共享到 macOS 上的 SCNView
- augmented-reality - 从 AR 应用程序 (WebXR) 检测房间中的真实物体
- javascript - 为什么 JSON.parse 调用后整数值发生变化