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/.

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.