[英]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.