nmapなどへの砲撃を検討したいと思います。それはその目的にうまく調整されており、非常に高速であり、あらゆるニーズを満たすためにpingを実行するための十分なさまざまな方法が含まれています。nmapを使用して、ネットワークのセグメント上のすべてのホストを検出します。
wayne@treebeard:~$ nmap -sP 10.0.0.0/24
Starting Nmap 5.00 ( http://nmap.org ) at 2010-12-08 09:16 MST
Host gw (10.0.0.1) is up (0.00036s latency).
Host 10.0.0.2 is up (0.0071s latency).
Host isengard.internal.databill.com (10.0.0.3) is up (0.00062s latency).
...
Host arod.internal.databill.com (10.0.0.189) is up (0.0046s latency).
Host 10.0.0.254 is up (0.00042s latency).
Nmap done: 256 IP addresses (43 hosts up) scanned in 3.00 seconds
ここでは、10.0.0.0から10.0.0.255までのすべてのホストをスキャンしました。
-sPは「pingスキャン」であり、通常のユーザーとして実行できる非常に一般的なホスト検出メカニズムです。nmapが実行するスキャンには他のタイプがあり、それらの多くはroot権限を必要とします。
Rubyでは、backtickまたはIO.popenを使用してnmapを実行し、その結果をキャプチャします。
output = `nmap -sP 10.0.0.0/24
output.each_line.find_all do |lines|
line =~ /^Host/
end.each do |line|
# Whatever you want to do for each host
end
-oXスイッチを指定すると、nmapはxmlを出力します。これは、解析が簡単な場合があります(thanks、tadman)。