Net-ssh and remote shell

following the page :
http://drnicwilliams.com/2006/09/22/remote-shell-with-ruby/

i’ve uninstalled net-ssh and the like then,
intall needle-1.3.0.gem
and re-installed :
net-ssh-2.0.3.gem
net-scp-1.0.1.gem
net-ssh-gateway-1.0.0.gem
net-ssh-multi-1.0.0.gem

after that, i wanted to test a small piece of code :

#! /usr/bin/env ruby

require ‘rubygems’
require ‘needle’
require ‘net/ssh’
require ‘lib/preferences’ # gives the options
require ‘lib/tt_check’ # gives tt_connected? (verify the USB-lan is
connected)

if tt_connected?
result=“”
session=Net::SSH.start(“TT”, “root”, options)
shell=session.shell.sync ### <<<=== line 13
out=shell.send_command ‘ls -lart’
puts out.stdout
else
puts “Twin-Tact is not connected.”
end

and i got :
$ ./ssh_shell_sync.rb
./ssh_shell_sync.rb:13: undefined method `shell’ for
#Net::SSH::Connection::Session:0x16b4fd0 (NoMethodError

then, i wonder if there is a special way to install net-ssh to let it
take into account “Needle” ???

Your code example works with net-shh 1.1.2 but not 2.0.3

For this sort of thing I prefer to use the .exec method and store all
output in an array:

require ‘rubygems’
require ‘needle’
require ‘net/ssh’
session=Net::SSH.start(“localhost”,
“90kts”, :password=>"**************")
cmd = ‘ls -lart’
out = []
out = session.exec!(cmd).split(/\n/)
puts out

Hope that helps =)

90kts [email protected] wrote:

out = session.exec!(cmd).split(/\n/)
puts out

Hope that helps =)

yes fine !

what is the usefullness of “needle” here ?

I’ve installed it, but don’t know how to verify net/ssh makes use of
it…

also, I’m unable to have a command with “cd /some/path”

cd is a built-in, i think that’s the prob.

Une Bévue [email protected] wrote:

also, I’m unable to have a command with “cd /some/path”

cd is a built-in, i think that’s the prob.

for example, with :
session.exec!(“cd /mnt/fat;ls -Al”)

i get :
exec: 4: cd: not found

???

On Jul 28, 8:06 pm, [email protected] (Une
Bévue) wrote:

???

Une Bévue

needle is a dependency, it will complain if you try and install net-
ssh without it.
for your example, just do this:
session.exec!(“ls -Al /mnt/fat”)

On Mon Jul 28 19:09:39 2008, Une_B=E9vue wrote:

exec: 4: cd: not found

???

Une Bévue

You will need to use Dir#chdir to change directories.

90kts [email protected] wrote:

needle is a dependency, it will complain if you try and install net-
ssh without it.

not sure about that point because i did two installs the first without
needle, i’ve uninstalled afterwards, install needle, and re-install
net/ssh.
no visible differences ???

for your example, just do this:
session.exec!(“ls -Al /mnt/fat”)

yes, of course, it was only an example.

On Jul 28, 11:36 pm, [email protected] (Une
Bévue) wrote:

for your example, just do this:
session.exec!(“ls -Al /mnt/fat”)

yes, of course, it was only an example.

Une Bévue

Does it not automatically install dependencies by default?

When I install from a local gem (no connection to internet) it will
complain that it doesn’t have the required dependency (needle)

Try installing with --ignore-dependencies and see what happens…
Anyhoo …

90kts [email protected] wrote:

Does it not automatically install dependencies by default?

When I install from a local gem (no connection to internet) it will
complain that it doesn’t have the required dependency (needle)

Quiest frankly i don’t remember that point…
If i remember well i’ve installed net/ssh from local gems without needle
the first time.