La sonde elle-même est une boucle while infinie de commandes nslookup. Avant cette boucle, un fichier temporaire est créé. Son but consiste à collecter les réponses à nslookup. Les variables probefail et retries sont remises à 0.
# Configurer un fichier temporaire pour les réponses de nslookup. DNSPROBEFILE=/tmp/.$RESOURCE_NAME.probe probefail=0 retries=0 |
Définit l'intervalle de sommeil de la sonde.
Utilise hatimerun pour lancer la commande nslookup afin que celle-ci transmette la valeur Délai_sonde et identifie l'hôte cible.
Définit la variable probefail sur la base de la réussite ou de l'échec du code de retour de nslookup.
Vérifie si la réponse nslookup provient du service de données modèle ou d'un autre serveur DNS si probefail a la valeur 1 (échec).
Voici le code de la boucle while.
while : do # L'intervalle auquel la sonde doit s'exécuter est spécifié dans la # propriété INTERVALLE_SONDE_COMPLET. Par conséquent, définir le sommeil de la sonde # à une durée de INTERVALLE_SONDE_COMPLET. sleep $PROBE_INTERVAL # Exécuter une commande nslookup de l'adresse IP sur laquelle le DNS fonctionne. hatimerun -t $PROBE_TIMEOUT /usr/sbin/nslookup $DNS_HOST $DNS_HOST \ > $DNSPROBEFILE 2>&1 retcode=$? if [ $retcode -ne 0 ]; then probefail=1 fi # Vérifier que la réponse à nslookup provient du serveur HA-DNS # et pas d'un autre nom de serveur mentionné dans le fichier # /etc/resolv.conf. if [ $probefail -eq 0 ]; then # Obtenir le nom du serveur ayant répondu à la requête de nslookup. SERVER=` awk ' $1=="Server:" { print $2 }' \ $DNSPROBEFILE | awk -F. ' { print $1 } ' ` if [ -z "$SERVER" ]; then probefail=1 else if [ $SERVER != $DNS_HOST ]; then probefail=1 fi fi fi |