Net::SSH problems

I am trying to connect to one of our UNIX servers. I can connect and can
validate myself but I cant seem to figure out how to ‘cd’ to another
directory besides my ‘/home’ directory and then execute commands from
the new directory.

below is what I have so far and each time I execute this I receive the
below error
-----ERROR------
C:/ruby/test/SSHtest.rb:75: undefined method shell' for #<Net::SSH::Connection::Session:0x2e5bf30> (NoMethodError) from c:/ruby/lib/ruby/site_ruby/1.8/net/ssh.rb:189:instart’
from C:/ruby/test/SSHtest.rb:72
-----CODE-----
Net::SSH.start( “hostname”, “username”, :password => “Password” ) do
|session|
shell = session.shell.open

script what we want to do

shell.pwd
shell.cd “/”
shell.pwd
shell.test “-e foo”
shell.cd “/file/trying/to/cd/to”
shell.send_data “program\n”
shell.pwd
shell.exit

give the above commands sufficient time to terminate

sleep 0.5

display the output

$stdout.print shell.stdout while shell.stdout?
$stderr.puts “-- stderr: --”
$stderr.print shell.stderr while shell.stderr?

end


  • I would greatly appreciate any help.

On Jun 6, 12:33 pm, Bob S. [email protected] wrote:

    from c:/ruby/lib/ruby/site_ruby/1.8/net/ssh.rb:189:in `start'

shell.cd “/file/trying/to/cd/to”
end


  • I would greatly appreciate any help.

    Posted viahttp://www.ruby-forum.com/.

Not sure what is wrong - I do something similar (this is snipped from
a bigger application, so it may not be the most idiomatic way to do
this, but it seems to work):

Net::SSH.start( CONFIG[‘target_machine’], CONFIG[‘user’],
CONFIG[‘password’] ) do |session|
shell = session.shell.sync
shell.send_command ‘y’ # To answer the 'are you allow to
authorize this computer questions

  commands = [
    "cd #{remote_dir}",
    "chmod 777 somescript.ksh",
    "./somescript.ksh"
    ]

  commands.each do |c|
    out = shell.send_command c
  end

end

I know the ‘build an array of commands’ is silly here, but as I said
its part of a bigger app - it does the ‘cd’, ‘chmod’ and runs the
script with no issues however.

stephen O’D wrote:

On Jun 6, 12:33 pm, Bob S. [email protected] wrote:

    from c:/ruby/lib/ruby/site_ruby/1.8/net/ssh.rb:189:in `start'

shell.cd “/file/trying/to/cd/to”
end


  • I would greatly appreciate any help.

    Posted viahttp://www.ruby-forum.com/.

Not sure what is wrong - I do something similar (this is snipped from
a bigger application, so it may not be the most idiomatic way to do
this, but it seems to work):

Net::SSH.start( CONFIG[‘target_machine’], CONFIG[‘user’],
CONFIG[‘password’] ) do |session|
shell = session.shell.sync
shell.send_command ‘y’ # To answer the 'are you allow to
authorize this computer questions

  commands = [
    "cd #{remote_dir}",
    "chmod 777 somescript.ksh",
    "./somescript.ksh"
    ]

  commands.each do |c|
    out = shell.send_command c
  end

end

I know the ‘build an array of commands’ is silly here, but as I said
its part of a bigger app - it does the ‘cd’, ‘chmod’ and runs the
script with no issues however.

I tried the above and I still get the same error.

#Net::SSH::Connection::Session:0x2e5bf30 (NoMethodError)
from c:/ruby/lib/ruby/site_ruby/1.8/net/ssh.rb:189:in `start’
from C:/ruby/test/SSHtest.rb:95

Any more ideas?

On Jun 9, 2:14 pm, Bob S. [email protected] wrote:

Posted viahttp://www.ruby-forum.com/.

Any more ideas?

What version of Ruby are you using?

In the first same looks like you’re using ruby builtin Net::SSH
support, but dunno if shell is being part of a Session instance.

On the second example, looks like it even worse, but looking at the
line numbers (95!) seems you have a huge script.

Can you reproduce the problem in a small one and pastie it to us so we
can trace it? (try providing the full backtrace to ease the task).

Thanks,

Luis L. wrote:

On Jun 9, 2:14�pm, Bob S. [email protected] wrote:

Posted viahttp://www.ruby-forum.com/.

Any more ideas?

What version of Ruby are you using?

when looking under C:\ruby\doc\ruby it shows ruby-1.8.5

In the first same looks like you’re using ruby builtin Net::SSH
support, but dunno if shell is being part of a Session instance.

On the second example, looks like it even worse, but looking at the
line numbers (95!) seems you have a huge script.

it is line 95 because I have lines 3-70 commented out so what is showing
in the first post is all that is being run and line 1 is require
‘net/ssh’

Can you reproduce the problem in a small one and pastie it to us so we
can trace it? (try providing the full backtrace to ease the task).

Thanks,