Wie überprüfe ich über eine Befehlszeile, ob das Netzwerk erreichbar ist?


12

Ich möchte ein Knurren an mich selbst senden, nachdem der SuSE-Server den Startvorgang abgeschlossen hat. Ich habe diese Nachricht erhalten socket_sendto(): unable to write to socket [101]: Network is unreachable in.

Wie kann ich über die Befehlszeile überprüfen, ob das Netzwerk erreichbar ist, und warten, ob dies nicht der Fall ist?



Linux Einzeiler zu beantworten , ja oder nein, wir sind mit dem Internet verbunden: ping -c 1 www.yourtrustedserver.com | grep " 0% packet loss". Damit wird der Server mit einem Paket gepingt und die Ausgabe auf die Zeichenfolge "0% Packet Loss" überprüft. (Das Leerzeichen vor 0% ist wichtig.) Wenn der Befehl eine Zeile zurückgibt, sind Sie verbunden, andernfalls nicht verbunden.
Eric Leschinski

Antworten:


13

ping an einen externen Host kann aus einer Vielzahl von Gründen fehlschlagen, von denen nur einige tatsächlich etwas Nützliches über den Zustand Ihres eigenen Netzwerks aussagen.

Öffnen Sie zunächst ein Terminalfenster und geben Sie Folgendes ein ip route ls

Sie sollten eine Ausgabe nach dem Vorbild von sehen

shadur@equinox:~$ ip route ls
192.168.15.0/24 dev eth0  proto kernel  scope link  src 192.168.15.102 
default via 192.168.15.1 dev eth0 

Dies zeigt an, dass Ihr lokales Netzwerk eine Ethernet-Verbindung ( eth0) mit der Adresse 192.168.15.0ist und dass sich das Standard-Gateway, über das es auf das restliche Internet zugreift, unter befindet 192.168.15.1.

Als nächstes können Sie versuchen, an pingdiese Adresse:

shadur@equinox:~$ ping 192.168.15.1
PING 192.168.15.1 (192.168.15.1) 56(84) bytes of data.
64 bytes from 192.168.15.1: icmp_req=1 ttl=255 time=0.352 ms
64 bytes from 192.168.15.1: icmp_req=2 ttl=255 time=0.269 ms
^C
--- 192.168.15.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.269/0.310/0.352/0.045 ms

Wenn Sie etwas Ähnliches sehen, ist Ihr eigenes lokales Netzwerk zumindest in Ordnung. An diesem Punkt können Sie mit erweiterten Tools nachsehen traceroute, wo Ihre Verbindung zum Ziel möglicherweise fehlschlägt.

Nach einer schnellen Überprüfung durch Google, was growleigentlich sein soll, habe ich jedoch das Gefühl, dass etwas anderes schief geht. Können Sie Ihre Frage erweitern, um uns ein paar Details darüber zu geben, was Sie versuchen, wie Sie es versuchen, und die vollständige Fehlerausgabe? Die Leitung, die Sie uns gerade geben, wird abrupt unterbrochen ...


3
ip route get 1.2.3.4ist zuverlässiger als nur zu tun ip route ls. Ersteres wird alle Regeln in Kraft setzen, die zusätzlich zu den Routen gelten. Außerdem wird die Möglichkeit eines Fehllesens der Routingtabelle (n) beseitigt.
Patrick

3

Eine sehr einfache und schnelle Möglichkeit ist die Verwendung des pingBefehls.

Sie können einfach tippen

 $ ping yahoo.com

(oder cnn.com oder einen anderen Host) und prüfen Sie, ob Sie eine Ausgabe zurückerhalten. Dies setzt voraus, dass Hostnamen aufgelöst werden können (dh DNS funktioniert). Wenn nicht, können Sie hoffentlich eine gültige IP-Adresse / Nummer eines Remote-Systems angeben und prüfen, ob diese erreichbar ist.

Hier ist die Ping-Manpage .

Update :

Als schnelles Beispiel können Sie den Rückgabewert (z. B. mit "echo $?") von überprüfen, um festzustellen , pingob der Befehl erfolgreich war (Sie können die Ausgabe des Befehls immer an weiterleiten > /dev/nul). Anmerkung, die ich -c 1hier verwende, aber Sie könnten mehr verwenden.

$ ping -c 1 yahoo.com
PING yahoo.com (72.30.38.140) 56(84) bytes of data.
64 bytes from ir1.fp.vip.sp2.yahoo.com (72.30.38.140): icmp_seq=1 ttl=52 time=83.5 ms

--- yahoo.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 83.593/83.593/83.593/0.000 ms

echo $?
0


$ ping -c 1 unicorns.are.here
ping: unknown host unicorns.are.here

$ echo $?
2

Aber wie kann ich mit Ping feststellen, dass alles in Ordnung ist?
Radek

1
@Radek Hast du es schon versucht? Ping sagt Ihnen, ob es Antworten bekommt.
JW013

Was ist, wenn sich der Server nur im Intranet befindet und keinen Zugriff auf die Außenwelt hat?
Radek

@ jw013: Ich habe es nicht versucht ... Ich weiß nicht, ob ich Ping aus einem unbeaufsichtigten Skript verwenden soll.
Radek

3
@Radek es ist ganz einfach. Ich gehe davon aus, dass mit "Konnektivität" gemeint ist, dass es mit einem anderen Host im Intranet kommunizieren kann. So laufen ping -c 2 -n <other host's IP>und arbeiten nach dem Rückkehrcode: wenn true (0), dann hat es Konnektivität; Wenn false (1), kann es nicht mit dieser Maschine kommunizieren.
lxop

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.