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