簡體   English   中英

Ruby'net / ssh'&基於bash cmd響應在ruby中使用邏輯

[英]Ruby 'net/ssh' & using logic in ruby based on bash cmd response

我可以使用Ruby'net / ssh'來基於目標系統登錄的bash cmd的輸出在ruby中設置一個變量嗎? 目標系統未安裝ruby。 從我的殼(顯然是紅寶石)...

例如(這有效並返回主機名):

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

我想基於“ cmd”的輸出在腳本中使用一些其他邏輯。 如果主機名是x,請執行此操作...我想用ruby進行此操作-而不是bash ..有意義嗎? 因此,在我的ruby腳本中-> test =從目標系統上的cmd輸出(僅限bash),然后如果test == x,我將運行第二條命令。

您可以使用這樣的語法

test = %x[ bash command ]

例如

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

您還可以通過調用以下命令檢查上一條命令的返回碼

$?.exitstatus

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM