1

我正在尝试在我的 Ruby 代码中使用 SSH 登录到远程机器,然后在 SSH 登录后尝试 cd 进入另一个目录。这是我的 Ruby 代码

require 'net/ssh'
require 'rubygems'
require 'needle'

Net::SSH.start('host', 'shui', :password => "password") do |ssh|
   output = ssh.exec!("hostname")
   shell = ssh.shell.open
   shell.pwd
   shell.cd "/svn"
   puts shell.pwd
end

当我运行我的脚本时,它给了我这个错误:

testssh.rb:8:in `block in <main>': undefined method `shell' ... (NoMethodError)

我很确定我已经安装了执行此操作所需的 gem。对于如何解决这个问题,有任何的建议吗?谢谢!

4

2 回答 2

2

中没有shell方法Net:SSH v2,产生的对象是Net::SSH::Connection::Session

net-ssh扩展为您提供了您正在寻找的功能:https ://github.com/mitchellh/net-ssh-shell

于 2012-08-13T22:00:10.777 回答
1

你能检查你的版本吗?

gem list --local | grep ssh

我有 2.5.2

我在网上找到了多个参考资料,但您应该使用:

http://net-ssh.rubyforge.org/ssh/v2/api/classes/Net/SSH.html

这是对 v1 的参考

http://net-ssh.github.com/ssh/v1/chapter-5.html

后者,使用shell方法。但我认为你没有安装那个 gem。

所以看看第一个(v2)。这对我来说很好。

于 2012-08-13T22:17:12.227 回答