SSH к серверу и выполнить эквивалент curl с Python - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть эта команда:

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())

У меня еще не было возможности выполнить это, поскольку сервер в данный момент недоступен. Я до сих пор не получил вывод записи в файл, а не стандартный вывод. Как мне это сделать? Кроме того, если что-то не так с тем, как я пытаюсь это сделать, я буду благодарен за отзыв.

1 Ответ

0 голосов
/ 05 ноября 2018

В самом протоколе SSH нет API, который заставлял бы сервер загружать файл и сохранять его локально (на сервере).

Это вообще правда, Python или нет.

Все, что вы можете сделать, это выполнить какое-либо приложение или команду (например, curl или подобное) на сервере SSH, чтобы сделать это за вас. В Python / Paramiko вы можете использовать SSHClient.exec_command.


Там может быть чистый способ Python для достижения того, что вам нужно, с некоторыми ограничениями. Но мы не знаем ваших ограничений, поэтому я не могу уточнить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...