2009-06-05 73 views
0

这让我疯狂。我偶尔碰到一个新的Ubuntu/Debian服务器。 基本上我不能做一个exec!通过net-ssh。请注意,我可以要求'net/ssh'非常好。当Net-SSH抱怨exec时该怎么办!方法丢失?

示例代码

require 'rubygems' 
require 'net/ssh' 

Net::SSH.start('my.random.box', 'myuser', :forward_agent => "true") do |ssh| 

    #output = ssh.exec("hostname") 
    #puts output 

    output = ssh.exec!("hostname") 
    puts stdout 
end 

相关系统环境信息

[email protected]:~$ gem list | grep net-ssh 
net-ssh (2.0.11) 
[email protected]:~$ which ruby 
/usr/bin/ruby 
[email protected]:~$ which gem 
/usr/bin/gem 


[email protected]:~$ gem environment 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.3.4 
    - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] 
    - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8 
    - RUBY EXECUTABLE: /usr/bin/ruby1.8 
    - EXECUTABLE DIRECTORY: /usr/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86-linux 
    - GEM PATHS: 
    - /usr/lib/ruby/gems/1.8 
    - /home/me/.gem/ruby/1.8 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - :sources => ["http://gems.rubyforge.org/", "http://gems.github.com"] 
    - REMOTE SOURCES: 
    - http://gems.rubyforge.org/ 
    - http://gems.github.com 
+0

您可以发布确切的错误你当你运行脚本,好吗? – 2009-06-05 17:48:21

回答

1

几件事情尝试:

  1. 验证EXEC!方法在源代码中。
  2. 检查两个宝石库,以确保没有旧版本的net-ssh版本。 gem list有一些奇怪的地方;进入目录并看看有什么更直接。
  3. require脚本中的当前版本。

    require 'rubygems'

    gem 'net-ssh', '=2.0.11'

    require 'net-ssh'

+0

非常感谢Sarah!宝石版本帮助了很多!我仍然只在/usr/lib/ruby/gems/1.8/gems中发现了一个net-ssh repo,尽管我找到了一个可能覆盖net :: ssh类的libnet-ssh-ruby1.8 – eyberg 2009-06-05 18:08:00