Палец вверх 0
Перевод
Перевод

Что делать, когда Net-SSH жалуется на exec! метод отсутствует?

Это сводит меня с ума. Время от времени я сталкиваюсь с этим на новом сервере Ubuntu / Debian. По сути, я не могу сделать Exec! через 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
ruby methods net-ssh
задан eyberg 5 июн. 2009 г., 21:40:48
источник

1 ответ

Решение 1
Перевод
Перевод

Несколько вещей, чтобы попробовать:

  1. Убедитесь, что exec! Метод в источнике.
  2. Проверьте оба хранилища гемов, чтобы убедиться, что там нет более старой версии net-ssh. gem list имеет некоторые странности; проще всего зайти в каталоги и посмотреть, что там.
  3. require текущей версии в вашем скрипте.

    require 'rubygems'

    gem 'net-ssh', '=2.0.11'

    require 'net-ssh'

ответ дан Sarah Mei 5 июн. 2009 г., 22:02:33
источник