как установить продолжительность или тайм-аут на Ruby ssh exec на удаленной машине - PullRequest
2 голосов
/ 03 апреля 2011

Использование ruby ​​ssh для запуска процесса оболочки , который непрерывно работает на удаленной машине .Как я могу принудительно установить время выполнения процесса ssh, а затем уничтожить этот процесс и завершить вызов ruby ​​ssh, переходя к следующему коду?

Цель: вызвать тесты на удаленной машине, используя для этого ruby ​​sshконкретная продолжительность.

пример:

 Net::SSH.start( hostname.to_s, username.to_s, :password => pw.to_s ) do|ssh|
         output = ssh.exec("command line call that runs continuously")
         end

Единственное, о чем я могу думать: a) использование Terminator для обертывания вокруг вызова ruby ​​exec в течение определенного времени b) использование perlвспомогательная функция для вызова командной строки, как показано здесь

Должно быть что-то более простое, чем это верно?

1 Ответ

0 голосов
/ 12 апреля 2011

с использованием Watchdog / Terminator, который посылает сигнал процессам, является наиболее распространенным решением.Обратите внимание, что удаленный процесс, возможно, придется уничтожить отдельно!

Другой способ сделать это - заставить оба конца наблюдать локальный «файл семафора» каждые X секунд ... если файл там с правильнымPID в нем, умрите изящно!

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

конечно, вы также можете отправить сигнал UNIX, такой как SIGUSER

...