Help with net-ssh 2.0


I am trying to use net-ssh for executing unix level commands using
net-ssh across many servers. I am looking for an example that would
allow me to use net-ssh similar to EXPECT.

As a first step I tried the following:


require ‘rubygems’
require ‘net/ssh’

Net::SSH.start(‘myhostname’, ‘username’, :password => “password”) do

#I need to sudo further into a different account
#How do I open a channel with PTY for this as the
#sudo fails without a proper terminal.

ssh.open_channel do |channel|

    channel.on_data { |ch, data|     puts "stdout: #{data}" }
    channel.on_extended_data { |ch, type, data| puts "stderr:

#{data}" }

    #The following command produces output
    channel.exec "hostname"

    #The following doesnot produce any output
    channel.exec "uptime"


#Not sure what is the purpose of the next statement


Would anyone please show me an example script of how to open a PTY
channel to make the sudo succeed and subsequently send commands and
receive output from stdout and stderror.