Ruby ssh example with error handling
Sep 2009
The following ruby snippet takes an array of commands as a parameter then runs all those commands via SSH.
You get back either a string containing an error or a hash that contains the results for each command, where the command is the key.
def execute_ssh(commands)
begin
results = {}
Timeout::timeout(2) do
begin
Net::SSH.start( hostname, username,
:password => password, :port => ssh_port ) do |ssh|
commands.each { |command|
results[command] = ssh.exec!(command)
}
end
rescue Net::SSH::HostKeyMismatch => e
e.remember_host!
retry
rescue StandardError => e
return e.to_s
end
end
return results
rescue Timeout::Error
return "Timed out trying to get a connection"
end
end