2

一度に約2500台のサーバーに、約15〜30分間隔でpingを実行する必要があります。これは、半リアルタイムのサーバーステータス情報を表示するためのものです。これは、最終的には数万のサイトに拡張される可能性があるため、これについて考えるときは、このことを念頭に置く必要があります。

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

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

編集:サーバーがオンラインである場合にのみ気にすることにも注意する必要があります。したがって、最初に受信したパケットで十分です。

4

1 に答える 1

3

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)。

于 2010-12-08T15:54:47.070 に答える