0

我正在尝试用 Python 编写简单的脚本来请求来自比特币矿机的 API GET 响应。我需要请求某个 JSON 键和值 {"command":"summary"}。我将从由此获得的 JSON 有效负载中提取数据,以监控 Zabbix 上的一些机器。

如果我像这样使用 bash 发送请求:

# echo '{"cmd":"summary"}' | timeout 1.5 nc IPADDRESS PORT

我会得到我需要的数据,我什至可以使用 tr、sed 和 jq 用 bash 处理它......

但是,如果我使用我的 Python 脚本发送请求,我总是会收到“invalid msg”。我宁愿用 Python 来做,因为我正在学习,我可以想象我的错误是非常愚蠢的。这是python代码。

#!/usr/bin/python3
import sys
import logging
import requests
import json
server = 'http://10.136.132.140:4028'
payload = {
"command":"summary"
}

jsonpayload = json.dumps(payload)
print(payload)
print(jsonpayload)
response = requests.get(server,
jsonpayload
)
print(response.json())

无论我做什么,这都行不通。我尝试使用直接有效负载作为 requests.get 的参数来仅发送字符串。没有任何效果。每次我得到相同的无效味精。我试过直接输入 response = requests.get('http://IPADDRESS:PORT', '{"command":"summary"}') ,单引号或双引号的任何可能组合......没有任何效果。

当我调用它时,我得到三个例外。重要的追溯如下:

http.client.BadStatusLine: STATUS=E,When=1608811559,Code=14,Msg=invalid cmd,Description=whatsminer v1.1

urllib3.exceptions.ProtocolError: ('Connection aborted.', BadStatusLine('STATUS=E,When=1608811559,Code=14,Msg=invalid cmd,Description=whatsminer v1.1'))

raise ConnectionError(err, request=request) requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine('STATUS=E,When=1608811559,Code=14,Msg=invalid cmd,Description=whatsminer v1.1') )

我在这里做错了什么?提前感谢您的帮助!

4

1 回答 1

0

如果要发送 json 有效负载,请尝试以下操作:

server = '' # server url
payload = {
"command":"summary"
}
response = requests.get(server, json=payload)
于 2020-12-24T12:31:53.883 回答