ping
Auf diese Weise können Sie testen, ob ein Host aktiv und verbunden ist. (Wenn ein Host lebt, aber nicht verbunden ist oder nur langsam reagiert, können Sie dies nicht von seinem Tod unterscheiden.)
Die vom ping
Befehl unterstützten Optionen variieren von System zu System. Sie sollten sicherstellen, dass es nicht für immer wiederholt wird, sondern nach einigen Sekunden zurückkehrt, wenn es keine Antwort erhalten hat.
Sendet mit FreeBSD- und Linux-iputils ping -c 1 -W 1 >/dev/null
einen einzelnen Ping und wartet 1 Sekunde. Sie müssen die Ausgabe nicht analysieren: Der Befehl gibt 0 zurück, wenn er einen Pingback erhalten hat, andernfalls ungleich Null (unbekannter Hostname, keine Route zum Host, keine Antwort). Einige Implementierungen benötigen möglicherweise andere Flags (z. B. -w
anstelle von -W
FreeBSD). Lesen Sie das Handbuch auf Ihrem System.
if ping -c 1 -W 1 "$hostname_or_ip_address"; then
echo "$hostname_or_ip_address is alive"
else
echo "$hostname_or_ip_address is pining for the fjords"
fi
answered
Antwort markiert worden sein . Das OP hat ausdrücklich darum gebetenmore ways to see if a given host is up
, außer mitping
, was diese Antwort nicht liefert."Because of the load it can impose on the network, it is unwise to use ping during normal operations or from automated scripts."
Ping ist großartig, um schnell eine Antwort zu erhalten, ob der Host mit dem Netzwerk verbunden ist, aber es sagt Ihnen oft nicht, ob der Host lebt oder nicht oder ob er noch wie erwartet funktioniert. Dies liegt daran, dass Ping-Antworten normalerweise vom Kernel verarbeitet werden. Selbst wenn jede Anwendung auf dem System abgestürzt ist (z. B. aufgrund eines Festplattenfehlers oder eines Speichermangels), erhalten Sie häufig weiterhin Ping-Antworten und gehen möglicherweise davon aus, dass dies der Computer ist Normaler Betrieb, wenn die Situation genau umgekehrt ist.
Überprüfung der Dienste
Normalerweise ist es Ihnen egal, ob ein Host noch online ist oder nicht. Was Sie wirklich interessiert, ist, ob der Computer noch eine Aufgabe ausführt. Wenn Sie die Aufgabe also direkt überprüfen können, wissen Sie, dass sowohl der Host aktiv ist als auch die Aufgabe noch ausgeführt wird.
Für einen Remote-Host, auf dem beispielsweise ein Webserver ausgeführt wird, können Sie Folgendes tun:
Wenn SSH ausgeführt wird und Sie Schlüssel für die kennwortlose Anmeldung eingerichtet haben, haben Sie einige weitere Optionen, zum Beispiel:
Dies funktioniert, indem Sie SSH in den Host einbinden, den
true
Befehl ausführen und dann die Verbindung schließen. Derssh
Befehl gibt nur dann Erfolg zurück, wenn dieser Befehl erfolgreich ausgeführt werden konnte.Remote-Tests über SSH
Sie können dies erweitern, um nach bestimmten Prozessen zu suchen, z. B. um sicherzustellen, dass diese
mysqld
auf dem Computer ausgeführt werden:In diesem Fall ist es natürlich besser, etwas wie
monit
auf dem Ziel auszuführen, um sicherzustellen, dass der Dienst weiterhin ausgeführt wird. Dies ist jedoch in Skripten nützlich, in denen Sie nur eine Aufgabe auf Maschine A ausführen möchten, solange Maschine B dafür bereit ist .Dies kann so etwas wie die Überprüfung sein, ob auf dem Zielcomputer ein bestimmtes Dateisystem bereitgestellt ist, bevor ein Vorgang ausgeführt wird
rsync
, damit Sie die Hauptfestplatte nicht versehentlich füllen, wenn ein sekundäres Dateisystem aus irgendeinem Grund nicht bereitgestellt wurde. Dadurch wird beispielsweise sichergestellt, dass/mnt/raid
das Gerät auf dem Zielcomputer bereitgestellt ist, bevor Sie fortfahren.Dienstleistungen ohne Client
Manchmal gibt es keine einfache Möglichkeit, eine Verbindung zum Dienst herzustellen, und Sie möchten nur sehen, ob eingehende TCP-Verbindungen akzeptiert werden. Wenn Sie
telnet
jedoch zum Ziel auf dem betreffenden Port gelangen, befindet es sich nur dort und trennt Sie nicht, was bedeutet, dass Sie dies tun in einem Skript würde es hängen lassen.Obwohl es nicht ganz so sauber ist, können Sie dies dennoch mit Hilfe der Programme
timeout
und tunnetcat
. Auf diese Weise wird beispielsweise überprüft, ob der Computer SMB / CIFS-Verbindungen am TCP-Port 445 akzeptiert, sodass Sie sehen können, ob die Windows-Dateifreigabe ausgeführt wird, auch wenn Sie kein Kennwort zum Anmelden haben oder die CIFS-Client-Tools nicht vorhanden sind. t installiert:quelle