Модуль SSH для Python

Мне нужно выполнить работу (используя свой веб-сервер) на удаленном компьютере, которая занимает около 10 минут.

Я использовал модуль pxssh в Python для того же, но он дает мне "ошибку тайм-аута" (не блокирует ).

Теперь я использую paramiko, но это возвращается, как только дает инструкцию.

Я хочу, чтобы веб-сервер дождался завершения работы. Доступен ли для этого какой-либо модуль SSH python.

Or

Можем ли мы добиться того же, изменив какие-либо параметры конфигурации pxssh или paramiko?


person Jatin Kumar    schedule 04.07.2011    source источник


Ответы (1)


Вы можете использовать метод recv_exit_status на канале для ожидания для выполнения команды:

recv_exit_status (сам)

Вернуть статус выхода из процесса на сервере. Это в основном полезно для получения результатов exec_command. Если команда еще не завершена, этот метод будет ждать, пока она не завершится, или пока канал не закроется. Если сервер не предоставил статус выхода, возвращается -1.

Например:

ssh = paramiko.SSHClient()
ssh.connect(remote, username=username, password=password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("some command")
exit_status = ssh_stdout.channel.recv_exit_status()
person ars    schedule 04.07.2011
comment
ssh_stdout - это не объект Channel, а ChannelFile, который не поддерживает метод recv_exit_status. - person emish; 23.10.2014
comment
@emish: Атрибут channel в ChannelFile - это объект Channel, поэтому пример кода вызывает метод recv_exit_status. - person ars; 30.10.2014
comment
Ссылка не работает. - person code_dredd; 26.10.2017