2010-12-08 18 views
2

私は約15-30分の間隔で一度に2500台のサーバにpingする必要があります。これは、セミリアルタイムサーバーのステータス情報を表示するためです。これは潜在的に数万のサイトに拡大する可能性があるため、これを考えながらこのことを念頭に置く必要があります。膨大な数の同時pingを実行するにはどうすればよいですか?

私はUbuntu 10.10 VPS(Bash)を使用し、Rubyを使用しています。

これを行う方法はありますか?

編集:サーバーがオンラインの場合は、のみに注意してください。したがって、最初に受信したパケットで十分です。

答えて

3

砲撃はnmapなどと考えられます。その目的に十分に合っていて、かなり速く、必要なものを満たすためにpingを実行するのに十分な方法が含まれています。ここに私のネットワークのセグメント上のすべてのホストを発見するnmapのを使用しています:

[email protected]:~$ 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で

、あなたはnmapを実行し、その結果をキャプチャするためにバッククォートやIO.popenを使用します:

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を供給した場合(ありがとう、タドマン)。

+0

私は今夜、利用可能な他のソリューションと一緒に試してみます。ありがとう! –

+3

'nmap -oX'を使うと、処理しやすいXML出力を得ることができます。 – tadman

関連する問題