【问题标题】:ssh to server and execute curl equivalent with Pythonssh 到服务器并使用 Python 执行 curl 等效项
【发布时间】:2019-04-08 00:11:19
【问题描述】:

我有这个命令:

ssh 111.222.333.444 curl -s -k https://123.456.789.876:4567/mock.crt -o /root/mock.crt

我想在我正在编写的 Python 应用程序中包含它或它的等价物。我想我需要结合使用请求和 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 服务器上下载文件吗?或者它也可以从本地机器访问?要将文件存储在 SSH 服务器上还是本地?
  • 我需要将文件下载到SSH服务器。
  • 顶部的 ssh/curl 命令有效。它将模拟证书添加到服务器。我正在尝试 Python 中的等价物。我想我可以使用 exec_command 之类的命令按原样执行命令,但我认为 requests 可能是尝试此操作的更好方法。
  • 好吧,这不是我的问题的答案。无论如何,请参阅我相当模糊的答案(对你相当模糊的问题)。

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


【解决方案1】:

SSH 协议本身没有 API 可以让服务器下载文件并将其存储在本地(在服务器上)。

这通常是正确的,无论是否使用 Python。

您所能做的就是在 SSH 服务器上执行一些应用程序或命令(如curl 或类似的),为您完成。在 Python/Paramiko 中,可以使用SSHClient.exec_command。


可能有一种纯 Python 方法可以实现您所需要的,但有一些限制。但是我们不知道你的限制,所以我不能详细说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多