Erweiterte ping-Optionen und praktische Anwendungen
Nachdem Sie die Grundlagen von ping und die Interpretation seiner Ausgabe verstanden haben, wollen wir nun einige erweiterte Optionen und praktische Szenarien erkunden, in denen ping für die Netzwerkdiagnose nützlich ist.
Zunächst erstellen wir ein einfaches Shell-Skript, das uns hilft, einen Host kontinuierlich zu überwachen und die Ergebnisse zu protokollieren:
nano ~/project/monitor_host.sh
Geben Sie das folgende Skript in den Editor ein:
#!/bin/bash
## Einfaches Netzwerküberwachungsskript
HOST=$1
INTERVAL=$2
LOG_FILE=~/project/ping_log.txt
echo "Starting monitoring of $HOST at $(date)" > $LOG_FILE
while true; do
ping -c 1 $HOST | grep "time=" >> $LOG_FILE
sleep $INTERVAL
echo "---" >> $LOG_FILE
done
Speichern Sie die Datei, indem Sie Strg+O
drücken, dann Enter
, und verlassen Sie den Editor mit Strg+X
.
Machen Sie das Skript ausführbar:
chmod +x ~/project/monitor_host.sh
Jetzt führen wir das Skript für einige Sekunden aus, um den Google-DNS-Server zu überwachen:
~/project/monitor_host.sh 8.8.8.8 2 &
sleep 10
kill $!
Dies wird:
- Das Überwachungsskript im Hintergrund starten
- 10 Sekunden warten
- Das Skript beenden
Lassen Sie uns das Protokoll untersuchen:
cat ~/project/ping_log.txt
Sie sollten mehrere Ping-Ergebnisse mit Zeitstempeln sehen.
Jetzt erkunden wir einige weitere erweiterte ping-Optionen:
- Festlegen des TTL (Time To Live):
ping -c 4 -t 64 8.8.8.8
Die Option -t
legt den TTL-Wert fest, der definiert, wie viele Netzwerksprünge (Hops) ein Paket zurücklegen kann, bevor es verworfen wird.
- Flood-Ping (erfordert sudo):
sudo ping -c 10 -f 8.8.8.8
Die Option -f
sendet Pakete so schnell wie möglich. Dies ist nützlich für Stress-Tests, sollte aber mit Vorsicht verwendet werden.
- Hörbarer Ping:
ping -c 4 -a 8.8.8.8
Die Option -a
erzeugt ein hörbares Signal, wenn ein Host antwortet. Dies ist nützlich, wenn Sie Probleme beheben und nicht auf den Bildschirm schauen.
- Zeitlimit:
ping -c 4 -w 2 8.8.8.8
Die Option -w
legt ein Zeitlimit in Sekunden fest, nach dem ping stoppt, unabhängig davon, wie viele Pakete gesendet wurden.
Lassen Sie uns ein praktisches Problembehandlungsszenario erkunden. Wir erstellen eine einfache Visualisierung des Netzwerkpfads zu einem Ziel mit traceroute (das ähnlich wie ping funktioniert, aber den Pfad zeigt, den die Pakete nehmen):
traceroute 8.8.8.8
Dieser Befehl zeigt jeden Sprung (Router) an, den die Pakete nehmen, um das Ziel zu erreichen. Sie werden etwas wie Folgendes sehen:
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 _gateway (10.0.2.2) 0.113 ms 0.087 ms 0.083 ms
2 * * *
3 * * *
4 8.8.8.8 14.080 ms 13.849 ms 14.399 ms
Die Sternchen (*) stellen Timeouts oder Router dar, die nicht auf traceroute-Anforderungen antworten.
Jetzt erstellen wir eine einfache Tabelle, um unsere Ping-Ergebnisse für verschiedene Hosts zu dokumentieren:
echo -e "Host\tMin Time\tAvg Time\tMax Time\tPacket Loss" > ~/project/ping_results.txt
Fügen wir den Google-DNS-Server zu unserer Tabelle hinzu:
result=$(ping -c 5 8.8.8.8 | tail -1)
min=$(echo $result | awk -F/ '{print $4}')
avg=$(echo $result | awk -F/ '{print $5}')
max=$(echo $result | awk -F/ '{print $6}')
loss=$(ping -c 5 8.8.8.8 | grep -o "[0-9]*%" | head -1)
echo -e "8.8.8.8\t$min ms\t\t$avg ms\t\t$max ms\t\t$loss" >> ~/project/ping_results.txt
Und fügen wir den Cloudflare-DNS-Server hinzu:
result=$(ping -c 5 1.1.1.1 | tail -1)
min=$(echo $result | awk -F/ '{print $4}')
avg=$(echo $result | awk -F/ '{print $5}')
max=$(echo $result | awk -F/ '{print $6}')
loss=$(ping -c 5 1.1.1.1 | grep -o "[0-9]*%" | head -1)
echo -e "1.1.1.1\t$min ms\t\t$avg ms\t\t$max ms\t\t$loss" >> ~/project/ping_results.txt
Lassen Sie uns unsere Ergebnistabelle anzeigen:
cat ~/project/ping_results.txt
Sie sollten eine formatierte Tabelle mit Ping-Statistiken für beide DNS-Server sehen, die Sie verwenden können, um ihre Leistung zu vergleichen.