python - ssh 到服务器并使用 Python 执行等效的curl

标签 python python-3.x ssh python-requests paramiko

我有这个命令:

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/

相关文章:

python - 如何在Python中通过SFTP连接后列出目录中的所有文件夹和文件

python - Pandas groupby 和滚动 4 周窗口

python - 您如何让机器人使用自定义表情符号添加 react ?

python - 如何更改 GtkImage 显示的图像?

python - 在 Python 中最后一次出现给定字符后查找字符串字符的最简单方法是什么?

python - DynamoDB - 如何查询嵌套属性 boto3

python - 无法通过 AsyncSSH 连接,错误主机 key 不受信任

ssh - 如何在后台正确打开 SSH 隧道?

python - Python 2 中 "//"和 "/"的区别

Python 代码监禁