我有这个命令:
ssh 111.222.333.444 curl -s -k https://123.456.789.876:4567/mock.crt -o /root/mock.crt
我想将它或它的等效项包含在我正在编写的 Python 应用程序中。我想我需要结合使用 requests 和 paramiko 来实现这一点。到目前为止我已经想出了这个:
def add_certs(self):
ssh = paramiko.SSHClient()
ssh.connect(111.222.333.444)
url = 'https://123.456.789.876:4567/mock.crt'
res = ssh.requests.get(url, verify=False)
print("Add mock server certs: " + res.json())
由于服务器当前不可用,我还没有机会运行它。我仍然没有将输出写入文件,而不是标准输出。我该怎么做呢?另外,如果我尝试执行此操作的方式有任何问题,我将不胜感激。
最佳答案
SSH 协议(protocol)本身没有 API 可以让服务器下载文件并将其存储在本地(在服务器上)。
无论是否使用 Python,这通常都是正确的。
您所能做的就是在 SSH 服务器上执行一些应用程序或命令(例如 curl
或类似的),来为您完成此操作。在 Python/Paramiko 中,您可以使用 SSHClient.exec_command
.
可能有一种纯 Python 方法可以实现您所需要的功能,但有一些限制。但我们不知道你的限制,所以我无法详细说明。
关于python - ssh 到服务器并使用 Python 执行等效的curl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53140759/