使用 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 我将运行第二个命令。