我需要在远程主机上执行
requests.post(url=url, headers=headers, data=json.dumps(data))
命令,因为远程主机可以访问 URL 而我的本地计算机不能。
但是,我想将此命令返回的响应对象设置为我计算机上本地脚本中的一个变量。我试图了解如何实际获取远程执行的 Python 函数返回的对象,而不仅仅是像我在大多数线程中看到的那样打印文本输出或退出代码。
伪代码:
def example_function():
return example_object
response = execute_on_host_and_get_return_value(user@machine, example_function())
# now response == example_object returned by example_function() executed on the remote host
在我的例子中,
example_function()
是 requests.post(url=url, headers=headers, data=json.dumps(data))
应该返回一个 Response 对象。 execute_on_host_and_get_return_value()
是丢失的拼图。
我不确定从哪里开始。我已经搜索过类似的线程,但他们通常只是询问如何远程执行命令或脚本,解决方案往往建议使用 paramiko 并且通常看起来像这样:
import paramiko
# declare credentials
host = 'hostip'
username = 'username'
password = 'password'
# connect to server
con = paramiko.SSHClient()
con.load_system_host_keys()
con.connect(host, username=username, password=password)
# run the command
# use the -1 argument so we can split the files by line
stdin, stdout, stderr = con.exec_command('ls -1 /tmp')
# process the output
if stderr.read() == b'':
for line in stdout.readlines():
print(line.strip()) # strip the trailing line breaks
else:
print(stderr.read())
是否有可能从
stdout
获取在远程主机上执行的Python函数返回的对象?或许:
将对象转换为 .json
➔ 获取等效字符串 ➔ 在远程执行的函数中输出 ➔ 从 stdout
? 本地获取输出
我确定我没有看到对此的简单解释并且它更复杂是有原因的,但它似乎应该是可行的。我很感激帮助和建议来完成这个。谢谢!