2009-06-05 61 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

相關問題