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.