Python, Paramiko: как выполнить команду ssh -n user@host с помощью paramiko?

Я пытаюсь выполнить команду удаленно через SSH из Python, и в этом конкретном случае нужно, чтобы stdin был перенаправлен на /dev/null.

То есть так же, как использование клиента OpenSSH с его флагом -n:

ssh -n user@host cmd

Как добиться этого (-n) с помощью Paramiko?

paramiko.SSHClient.exec_command(), похоже, не позволяет этого, но, может быть, я что-то упускаю?


person herira    schedule 26.09.2011    source источник


Ответы (2)


Если я неправильно понимаю ваш вопрос: вам не нужно этого добиваться. Ничто автоматически не читается из стандартного ввода/не записывается в стандартный ввод удаленного процесса, если только вы сами не сделаете это явно. Значит, вам не нужно предотвращать чтение со стандартного ввода?

РЕДАКТИРОВАТЬ: может возникнуть проблема, если удаленный процесс ожидает данные на стандартном вводе и продолжает их ждать? Попробуйте позвонить shutdown_write() на канал:

stdin, stdout, stderr = client.exec_command(cmd)
stdin.channel.shutdown_write()
person Steven    schedule 26.09.2011
comment
Ну, в данном случае, похоже, да. Я пытаюсь выполнить некоторые команды powershell на удаленном хосте и часами пытаюсь заставить его работать с Paramiko. В конце концов я пришел к выводу, что для этого мне нужно сделать ssh -n user@host cmd, тогда как ssh user@host cmd просто зависнет навсегда. Выполнение этого вручную из командной строки с использованием клиента OpenSSH подтверждает, что без флага -n удаленная команда зависает. - person herira; 26.09.2011
comment
Жаль, что я не спросил несколько часов назад. Спасибо, Стивен! :) - person herira; 26.09.2011

Я бы отказался от парамико и начал использовать ткань. Это позволит вам совершать удаленные вызовы в системе. Он использует paramiko для ssh-соединения и предоставляет приятный чистый интерфейс для гораздо большего.

Я не уверен, зачем вам нужно перенаправлять стандартный ввод в /dev/null, но есть настройки, позволяющие подавить его с помощью ткани.

Удачи!

person myusuf3    schedule 26.09.2011
comment
Спасибо, я посмотрю на это, когда время позволит. Прямо сейчас у меня есть крайний срок, который говорит, что я использую решение Стивенса. :) - person herira; 26.09.2011