2014-10-07 178 views
0

我需要同时ping多个ip地址。我知道可以做得很好的程序(colaso​​ft),但是,我需要将结果提供给我的ruby脚本。我在想多个命令提示是唯一的方法,但我希望远离这一点。 还有其他一些方法可以ping多个地址,分别得到他们的结果,这种'方式'必须能够被ruby脚本初始化和分析。同时ping多个不同的ip地址

+1

你将不得不使用多线程来做到这一点,这是我想多'cmd'实例。此外,拥有多个ping会降低网络速度,导致读数不准确 – TameHog 2014-10-07 23:15:57

+0

请查看http://askubuntu.com/q/413367。但是,你应该能够通过搜索找到它。 – 2014-10-07 23:36:40

回答

1

我会做这样的事情:

ips = ['8.8.8.8', '127.0.0.1'] 

threads = ips.map do |ip| 
    Thread.new { Thread.current[:result] = `ping -q -c 1 #{ip}` } 
end 

threads.each do |thread| 
    thread.join 
    puts "#{thread[:result]} \n\n" 
end 

输出示例:

PING 8.8.8.8 (8.8.8.8): 56 data bytes 

--- 8.8.8.8 ping statistics --- 
1 packets transmitted, 1 packets received, 0.0% packet loss 
round-trip min/avg/max/stddev = 28.667/28.667/28.667/0.000 ms 


PING 127.0.0.1 (127.0.0.1): 56 data bytes 

--- 127.0.0.1 ping statistics --- 
1 packets transmitted, 0 packets received, 100.0% packet loss 
+0

正是我期待的输出!非常感谢 – Schylar 2014-10-07 23:55:03