Ich schreibe ein Wake-on-Lan-Skript für einen Satz unserer Laborcomputer. Wir haben sqlite db mit einer Liste der Computer-Hostnamen, -IPs und -MACs und momentan pinge ich jeden mit '-c1', damit er nicht endlos läuft - aber selbst wenn man etwas warten muss, gibt es einen schnelleren Weg, ihn zu bekommen eher antworten als pingen? Die Verwendung von Ping scheint das Skript ziemlich zu verlangsamen, da Ping-Antworten erforderlich sind, um fortzufahren.
Vielen Dank für alle Vorschläge!
quelle
Dafür wurde fping entwickelt. http://fping.sourceforge.net/
Sie müssen die Ausgabe anschließend analysieren, anstatt sich auf einen Rückkehrcode zu verlassen. Dies ist jedoch viel schneller als normales Ping.
quelle
Dies funktioniert nur für einen oder zwei Computer. Wenn Sie sie jedoch direkt mit dem Computer verbinden, der für die Statusprüfung zuständig ist, können Sie anhand
ethtool
der Verknüpfung feststellen , ob die Verknüpfung aktiv ist oder nicht.quelle
ethtool {network_interface} | grep "Link detected" | cut -f 3 -d ' '
wird zurückgegeben,yes
wenn eine Maschine angeschlossen ist, undno
wenn dies nicht der Fall ist.Was Sie tun können, ist das Pingen der Broadcast-Adresse, wodurch alle Computer zurückpingen sollten. Dann können Sie diese Liste mit Ihrer SQLite-Version abgleichen, um sicherzustellen, dass alle Computer in Betrieb sind.
Abgesehen davon ist ein Ping wahrscheinlich der schnellste Weg, um sicherzustellen, dass ein Computer in einem Netzwerk aktiv ist. Wie in der anderen Antwort erwähnt, liefert dies keine wirklich nützlichen Daten. Wenn Sie Skripte installieren können, können Sie einen Cronjob zum Pingen eines zentralen Servers hinzufügen, eine Aufgabe ausführen oder die Prozessliste einfach an einen zentralen Server senden, der die Anforderung protokolliert. Prüfen Sie dann einfach, ob Probleme vorliegen, die nicht jedes Mal manuell überprüft werden müssen.
quelle
Ganglia verwendet Multicast-Verkehr, um viele Hosts in einem Cluster zu überwachen. Vielleicht könnten Sie etwas Ähnliches verwenden? Dies setzt voraus, dass Ihre Netzwerkhardware Multicast-Verkehr zwischen allen Hosts und Ihrem Überwachungssystem zulässt.
quelle
Ich hatte das gleiche Problem und fand das folgende (schnelle & schmutzige) Skript. Dies gibt im Wesentlichen alle Pings als separate Jobs parallel aus und scannt ein gesamtes / 24-Subnetz in 3 Sekunden. Beachten Sie, dass ich aus irgendeinem Grund nicht herausfinden musste, dass ich den Ping-Ergebniscode hier nicht verwenden konnte, aber grep -v hat die Arbeit erledigt:
quelle
In C
quelle
Ich habe
fping -r0 ...
die schnellste Antwort gefunden.Die
-r
(Wiederholungs-) Option scheint schneller zu sein als die ähnliche-c
(Anzahl). Bei Verwendung von-r0
Ergebnissen wird nur ein Ping gesendet, und die Ausgabe wird im Vergleich zu anderen Optionen stark verkürzt.Auf meinem System ...
Ergebnisse in ...
Ein bisschen Massage, um die
ICMP
Nachricht (en) loszuwerden, gibt mir ...Was die Geschwindigkeit
fping
angeht , ist der alte 1,8 GHz Intel Dual-Core mit 4 GB RAM ...Und die
grep
undsort
scheinen nur 0.001-0.004s zur Zeit hinzuzufügen ...ANMERKUNGEN
ICMP
Meldung tritt nicht bei jedem Lauf auf.2>&1
ist notwendig , um zu verhindernICMP
Nachricht aus zeigt sich in der Ausgabe , wie sie gesendet wird ,stderr
stattstdout
.quelle