2010-12-08 34 views
2

Je dois faire un ping sur environ 2500 serveurs à la fois, à intervalles d'environ 15-30 minutes. Ceci permet d'afficher les informations d'état du serveur en temps réel. Cela pourrait éventuellement atteindre des dizaines de milliers de sites, donc je dois garder cela à l'esprit en y réfléchissant. J'utilise un Ubuntu 10.10 VPS (Bash) et en utilisant Ruby.Comment effectuer une quantité massive de pings simultanés?

Y a-t-il un moyen de s'y prendre?

Modifier: Je dois également noter que je seulement si le serveur est en ligne. Donc, le premier paquet reçu devrait suffire.

Répondre

3

Je considérerais le bombardement à nmap ou son semblable. Il est bien réglé à cet effet, étant assez rapide, et il contient assez de différentes façons de ping pour satisfaire tout besoin. Ici se sert de nmap pour découvrir tous les hôtes sur un segment de mon réseau:

[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 

Ici, nous avons scannés pour tous les hôtes de 10.0.0.0 par 10.0.0.255. -sP est un "ping scan", un mécanisme de découverte d'hôte assez générique qui peut être exécuté en tant qu'utilisateur ordinaire. Il existe d'autres types d'analyse que fait nmap, dont beaucoup ont besoin de privilèges root.

Dans Ruby, vous utiliserez backtick ou IO.popen d'exécuter nmap et capturer ses résultats:

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 

Si vous fournissez le commutateur -oX, Nmap XML de sortie, qui peut être plus facile à analyser (merci, tadman).

+0

Je vais essayer ce soir, avec toutes les autres solutions qui deviennent disponibles. Merci! –

+3

Si vous utilisez 'nmap -oX' vous pouvez obtenir une sortie XML qui peut être plus facile à traiter. – tadman