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:in `start'
        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.
--
Posted via http://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.

···

On Jun 6, 12:33 pm, Bob Smyph <bobsm...@hotmail.com> wrote:

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:in `start'
        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.
--
Posted viahttp://www.ruby-forum.com/.

stephen O'D wrote:

···

On Jun 6, 12:33 pm, Bob Smyph <bobsm...@hotmail.com> 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?

--
Posted via http://www.ruby-forum.com/\.

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,

···

On Jun 9, 2:14 pm, Bob Smyph <eric.ram...@cbc-companies.com> wrote:

stephen O'D wrote:
> On Jun 6, 12:33 pm, Bob Smyph <bobsm...@hotmail.com> 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?

--
Luis Lavena

Luis Lavena 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'

···

On Jun 9, 2:14�pm, Bob Smyph <eric.ram...@cbc-companies.com> wrote:

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,

--
Posted via http://www.ruby-forum.com/\.