2013-08-11 6 views
0

Использование Ruby 'net/ssh' Можно ли установить переменную в ruby ​​на основе вывода bash cmd в целевой системный журнал? В целевой системе не установлен рубин. С моей оболочки (есть рубин, очевидно) ...Ruby 'net/ssh' & using logic in ruby ​​на основе bash cmd response

Например (это работает и возвращает имя хоста):

hosts = ['10.4.5.12', '10.4.5.18'] 
cmd = "/bin/hostname;" 

hosts.each do |host| 
    begin 
     Net::SSH.start(host , username, :password => password, :paranoid=>false) $ 
     puts "\n#{host}\n" 
     puts ssh.exec! cmd 
     puts "\n" 
    end 
     rescue Timeout::Error 
     puts "#{host} Timed out" 
     rescue Errno::EHOSTUNREACH 
     puts "#{host} Host unreachable" 
     rescue Errno::ECONNREFUSED 
     puts "#{host} Connection refused" 
     rescue Net::SSH::AuthenticationFailed 
     puts "#{host} Authentication failure" 
    end 
end 

Я хочу использовать некоторую дополнительную логику в моем сценарии основаны на выходе «ЦМД ». Если имя хоста - это x, сделайте это ... Я хочу сделать это в рубине - не bash .. Имеют смысл? Итак, в моем ruby-скрипте -> test = вывод из cmd в целевой системе (только bash), а затем, если test == x, я запустим вторую команду.

ответ

0

Вы можете использовать синтаксис как этот

test = %x[ bash command ] 

, например

1.9.3-p448 :001 > command = %x[ echo "Hello world" ] 
=> "Hello world\n" 

Вы также можете проверить код возврата последней команды, вызвав

$?.exitstatus 
+0

Как это помогает ОП ? –