Options avancées de la commande ping et applications pratiques
Maintenant que vous comprenez les bases de la commande ping et comment interpréter sa sortie, explorons quelques options avancées et des scénarios pratiques où le ping est utile pour le diagnostic réseau.
Commençons par créer un simple script shell qui nous aidera à surveiller en continu un hôte et à enregistrer les résultats :
nano ~/project/monitor_host.sh
Tapez le script suivant dans l'éditeur :
#!/bin/bash
## Simple network monitoring script
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
Enregistrez le fichier en appuyant sur Ctrl+O
, puis Entrée
, et quittez avec Ctrl+X
.
Rendez le script exécutable :
chmod +x ~/project/monitor_host.sh
Maintenant, exécutons le script pendant quelques secondes pour surveiller le serveur DNS de Google :
~/project/monitor_host.sh 8.8.8.8 2 &
sleep 10
kill $!
Cela va :
- Démarrer le script de surveillance en arrière-plan
- Attendre 10 secondes
- Arrêter le script
Examinons le journal :
cat ~/project/ping_log.txt
Vous devriez voir plusieurs résultats de ping avec des horodatages.
Maintenant, explorons quelques options de ping plus avancées :
- Définir le TTL (Time To Live - Durée de vie) :
ping -c 4 -t 64 8.8.8.8
L'option -t
définit la valeur du TTL, qui détermine combien de sauts réseau un paquet peut effectuer avant d'être rejeté.
- Ping de saturation (nécessite les droits sudo) :
sudo ping -c 10 -f 8.8.8.8
L'option -f
envoie des paquets aussi rapidement que possible. Cela est utile pour les tests de stress, mais doit être utilisé avec prudence.
- Ping sonore :
ping -c 4 -a 8.8.8.8
L'option -a
produit un son d'alerte audible lorsqu'un hôte répond, ce qui est utile lorsque vous effectuez des diagnostics et que vous ne regardez pas l'écran.
- Temporisation avec délai :
ping -c 4 -w 2 8.8.8.8
L'option -w
définit un délai en secondes après lequel le ping s'arrêtera, quelle que soit le nombre de paquets envoyés.
Explorons un scénario pratique de dépannage. Nous allons créer une simple visualisation du chemin réseau jusqu'à une destination en utilisant la commande traceroute (qui fonctionne de manière similaire au ping, mais montre la route que suivent les paquets) :
traceroute 8.8.8.8
Cette commande montre chaque saut (routeur) que les paquets traversent pour atteindre la destination. Vous verrez quelque chose comme :
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
Les astérisques (*) représentent des délais d'attente dépassés ou des routeurs qui ne répondent pas aux requêtes traceroute.
Maintenant, créons une simple table pour documenter nos résultats de ping pour différents hôtes :
echo -e "Host\tMin Time\tAvg Time\tMax Time\tPacket Loss" > ~/project/ping_results.txt
Ajoutons le serveur DNS de Google à notre table :
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
Et ajoutons le serveur DNS de Cloudflare :
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
Affichons notre table de résultats :
cat ~/project/ping_results.txt
Vous devriez voir une table formatée avec les statistiques de ping pour les deux serveurs DNS, que vous pouvez utiliser pour comparer leurs performances.