Il se peut que vous souhaitiez passer ce paragraphe pour y revenir après la lecture de la théorie relative au réseau.
Le véritable test concernant une connexion internet consiste à réussir une requête DNS. [NdT: DNS est l'abréviation de Domain Name Server]. Quand un utilisateur envoie un courriel ou pointe son navigateur sur un domaine internet (comme www.unixtech.be), le DNS traduit cette adresse aisée à mémoriser en une adresse internet (IP). Ce terme recouvre deux définitions: (i) celle que nous venons de voir (la conversion de nom d'adresses) mais aussi (ii) l'attribution de noms d'hôtes. Naturellement vous pouvez employer la commande ping pour déterminer si un serveur fonctionne. Cependant, certains réseaux filtrent les messages ICMP [NdT: ICMP est l'abréviation d'Internet Control Message Protocol.] et de ce fait, la commande ping ne vérifie pas le fonctionnement de votre DNS. dig envoie en paquet UDP [NdT: UDP est l'acronyme d'User Data Protocol]. similaire à celui émis par ping. Malheureusement, la méthode impliquant dig prend beaucoup de temps et on a souvent envie de l'arrêter au bout de quelques secondes.
Le script qui suit permet d'interroger un serveur de noms distant.
Typiquement, ce script pourrait lancer fetchmail
et peut-être uucico. Fixez l'adresse IP
du serveur de noms à une valeur adéquate telle que celle de votre
fournisseur d'accès internet (FAI);
[NdT: le terme anglais est ISP (acronyme d'Internet Service Provider)]. ensuite, augmentez la durée à 2 secondes ou plus si votre serveur
de noms prend plus de temps à vous répondre.
MY_DNS_SERVER=197.22.201.154
while true ; do ( dig @$MY_DNS_SERVER netscape.com IN A & DIG_PID=$! { sleep 2 ; kill $DIG_PID ; } & sleep 1 wait $DIG_PID ) 2 > /dev/null | grep -q '^[^;]*netscape.com' && break done |