Please help with NET::SSH

Hello ,
I use the NET::SSH gem, and I have some trouble using it, I can’t send
successive command.
Per example when I type the commands :
“ls” followed by “cd desktop” and then “ls” again.
the second time I send “ls”, return me the exact same list as the first
“ls” send the “cd desktop” command is ignored.
net::ssh act like if it open a new terminal for each command send.

Here the code I use:

require ‘rubygems’
require ‘net/ssh’

HOST = ‘192.168.0.3’
USER = ‘utilisateur’
PASS = ‘motdepasse’

Net::SSH.start( HOST, USER, :password => PASS ) do|ssh|
ssh.exec(‘ls’)
ssh.exec(‘cd Desktop’)
ssh.exec(‘ls’)
end

I use NET::SSH version (2.0.23) on ruby 1.9.2p0.
Can someone please send me the code allowing me to send these two
simples commands in series to the terminal.
As it seems the above code send these commands in parallels.

Thanks very much.

On Mon, Dec 20, 2010 at 05:47, Jean-eric Godard [email protected] wrote:

I use the NET::SSH gem, and I have some trouble using it, I can’t send
successive command.
Per example when I type the commands :
“ls” followed by “cd desktop” and then “ls” again.
the second time I send “ls”, return me the exact same list as the first
“ls” send the “cd desktop” command is ignored.
net::ssh act like if it open a new terminal for each command send.

It is: the ‘exec’ operation opens a new channel to the server, runs
the given command, then closes it.

To do what you want there you would need to exec /bin/sh, then drive
that with send_input.

Regards,
Daniel

Many thanks for your reply.

Unfortunately I have little computer programming knowledge.

I try to do what you write and send the follwing commands:

Net::SSH.start( HOST, USER, :password => PASS ) do|ssh|

ssh.exec(’/bin/sh’)
ssh.exec(‘cd Desktop’)
ssh.exec(‘ls’)

end

and other syntax like this

Net::SSH.start( HOST, USER, :password => PASS ) do|ssh|

ssh.exec(‘exec /bin/sh’)
ssh.exec(‘cd Desktop’)
ssh.exec(‘ls’)

end

but nothing works

please how can I send these magic commands.

Best regards

Jean-eric Godard wrote in post #969505:

Many thanks for your reply.

Unfortunately I have little computer programming knowledge.

Try using Net::SSH::Telnet gem instead. This wraps Net::SSH with a
simple send/expect API just like Net::Telnet.