Seb*_*ler 4 ruby ssh ruby-on-rails net-ssh
在我的应用程序中,我想exec!
在指定的时间后终止SSH连接的命令.
我发现:timeout
了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 }
Run Code Online (Sandbox Code Playgroud)
然而这对我来说似乎很脏.我期待类似的东西server.exec("some command" { :timeout=>60})
.也许有一些内置功能来实现这个功能?
我不确定这是否真的可以在SSH上下文中工作,但Ruby本身有一个超时方法:
server = NET::SSH.start ...
timeout 60 do
server.exec! "some command"
end
Run Code Online (Sandbox Code Playgroud)
这会Timeout::Error
在60秒后升高.查看文档.
归档时间: |
|
查看次数: |
5367 次 |
最近记录: |