In my application I want to terminate the exec!
command of my SSH connection after a specified amount of time.
I found the :timeout
for the Net::SSH.start
command but following the documentation this is only for the initial connection. Is there something equivalent for the exec
command?
My first guess would be not using exec!
as this will wait until the command is finished but using exec
and surround the call with a loop that checks the execution status with every iteration and fails after the given amount of time.
Something like this, if I understood the documentation correctly:
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 }
However this seems dirty to me. I expect something like server.exec("some command" { :timeout=>60})
. Maybe there is some built in function for achieving this functionality?