Может ли ssh-клиент выполнить тайм-аут, если данные не получены ПОСЛЕ успешного установления ssh-соединения - PullRequest
1 голос
/ 29 марта 2012

Я пишу скрипт, который выполняет команду удаленно через SSH, используя perl.Тайм-аут может произойти, когда a) SSH-клиент не может подключиться b) SSH-клиент может подключиться, но удаленная команда выполняется намного дольше (скажем,> 5 минут)

Для (a) theren isопция доступна в клиенте ssh.Для (б) я не могу ничего найти.Спасибо за любые вклады

Ответы [ 3 ]

1 голос
/ 29 марта 2012

man ssh_config предполагает, что ServerAliveInterval - это то, что вы ищете:

ServerAliveInterval
     Sets a timeout interval in seconds after which if no data has been received from the server, ssh(1) will send a message through
     the encrypted channel to request a response from the server.  The default is 0, indicating that these messages will not be sent
     to the server, or 300 if the BatchMode option is set.  This option applies to protocol version 2 only.  ProtocolKeepAlives and
     SetupTimeOut are Debian-specific compatibility aliases for this option.
0 голосов
/ 30 марта 2012

использовать Net :: OpenSSH :

my $ssh = Net::OpenSSH->new($host, kill_ssh_on_timeout => 1, timeout => 5);
my $output = $ssh->capture({tty => 1, timeout => 300}, $cmd);

Тем не менее, прочитайте запись о таймаутах в документации по модулю.

0 голосов
/ 29 марта 2012

Что вы ищете для функции пробуждения по тайм-ауту? Если вы привыкли к сигналам, попробуйте POSIX :: alarm (). Или проверьте Perl модуль IPC :: Run.

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