私のアプリケーションexec!
では、指定された時間が経過した後、SSH接続のコマンドを終了したいと思います。
コマンドの:timeout
forを見つけましたが、ドキュメントに従って、これは最初の接続専用です。コマンドNet::SSH.start
に相当するものはありますか?exec
私の最初の推測ではexec!
、コマンドが終了するまで待機するので使用しませんがexec
、呼び出しを使用して、反復ごとに実行ステータスをチェックし、指定された時間が経過すると失敗するループで囲みます。
ドキュメントを正しく理解していれば、このようなものです。
server = NET::SSH.start(...)
server.exec("some command")
start_time = Time.now
terminate_calculation = false
trap("TIME") { terminate_calculation = ((Time.now - start_time) > 60) }
ssh.loop(0.1) { not terminate_calculation }
しかし、これは私には汚いようです。私はのようなものを期待していserver.exec("some command" { :timeout=>60})
ます。たぶん、この機能を実現するための組み込み関数がいくつかありますか?