我试图使用Ruby的Timeout :: timeout机制来中止挂起的ssh命令,但它似乎并没有起作用。如果我在ssh调用之前滑入无限循环,它将终止,所以我知道我做得对。这笔交易是什么?是ssh还是open3?
代码很简单:
require 'timeout'
require 'open3'
begin
status = Timeout::timeout(5) do
r = Open3.capture3('ssh root@192.168.1.1')
puts 'Debug 1'
end
rescue Timeout::Error
puts 'Timeout exceeded'
end
如果有任何类型的提示,它将无限期地保留在那里,而不会打印超出'超时'或者'调试1'。