Python, Paramiko: Как сделать «ssh -n user @ host cmd», используя paramiko? - PullRequest
2 голосов
/ 26 сентября 2011

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

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

ssh -n user@host cmd

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

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

Ответы [ 2 ]

2 голосов
/ 26 сентября 2011

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

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

stdin, stdout, stderr = client.exec_command(cmd)
stdin.channel.shutdown_write()
1 голос
/ 26 сентября 2011

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

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

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