This is what I did thanks to @Christian and this wonderful Pastie :
Net::SSH::Multi.start do |session| # define the servers we want to use my_ticket.servers.each do |session_server| session.use session_server , :user => my_ticket.user_name , \ :password => my_ticket.user_pass end session.open_channel do |channel| channel.request_pty do |c, success| raise "could not request pty" unless success channel.exec "sudo YOUR_COMMAND" channel.on_data do |c_, data| if data = /\[sudo\]/ channel.send_data(@password + "\n") end puts data end end end # run the aggregated event loop session.loop end
source share