Net-SSH が exec について苦情を言った場合の対処方法!メソッドが欠落していますか?
質問
これは私を夢中にさせます。新しい ubuntu/debian サーバーで時々これに遭遇します。基本的に実行はできません!net-ssh 経由。「net/ssh」を完全に要求できることに注意してください。
サンプルコード
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
関連するシステム環境情報
me@box:~$ gem list | grep net-ssh
net-ssh (2.0.11)
me@box:~$ which ruby
/usr/bin/ruby
me@box:~$ which gem
/usr/bin/gem
cyn0n@spicetrader:~$ 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
解決
試してみたいことがいくつかあります:
- 実行者を確認してください。メソッドはソースにあります。
- 両方の gem リポジトリをチェックして、古い net-ssh バージョンが存在しないことを確認します。
gem list
いくつかの奇妙な点があります。ディレクトリに移動してそこにあるものを確認する方が簡単です。 require
スクリプト内の現在のバージョン。require 'rubygems'
gem 'net-ssh', '=2.0.11'
require 'net-ssh'
所属していません StackOverflow