Я пытаюсь научиться использовать жемчужину net-ssh для ruby. Я хочу выполнить приведенные ниже команды после входа в каталог -/home/james.
cd /
pwd
ls
Когда я делаю это со шпателем, он работает, и я могу видеть список каталогов. Но, когда я делаю это с кодом ruby, он не дает мне тот же результат.
require 'rubygems'
require 'net/ssh'
host = 'server'
user = 'james'
pass = 'password123'
def get_ssh(host, user, pass)
ssh = nil
begin
ssh = Net::SSH.start(host, user, :password => pass)
puts "conn successful!"
rescue
puts "error - cannot connect to host"
end
return ssh
end
conn = get_ssh(host, user, pass)
def exec(linux_code, conn)
puts linux_code
result = conn.exec!(linux_code)
puts result
end
exec('cd /', conn)
exec('pwd', conn)
exec('ls', conn)
conn.close
Выход -
conn successful!
cd /
nil
pwd
/home/james
ls
nil
Я ожидал, что pwd даст мне/вместо/home/james. Так оно и работает в замазке. Какая ошибка в рубиновом коде?