El análisis en sí es un bucle while infinito de órdenes nslookup. Antes del bucle while, se configura un archivo temporal para contener las respuestas de nslookup. Las variables probefail y retries se inicializan a 0.
# Configurar un archivo temporal para las respuestas de nslookup. DNSPROBEFILE=/tmp/.$RESOURCE_NAME.probe probefail=0 retries=0 |
Establece el intervalo de reposo para el análisis
Utiliza hatimerun para ejecutar nslookup, pasando el valor Probe_timeout e identificando el sistema de destino
Establece la variable probefail en función del éxito o fracaso del código de retorno de nslookup
Si se establece probefail en 1 (fallo), verifica que la respuesta a nslookup haya provenido del servicio de datos de ejemplo y no de algún otro servidor de DNS
Éste es el código bucle while.
while : do # El intervalo al que se debe ejecutar el análisis se especifica en la # propiedad THOROUGH_PROBE_INTERVAL. Por tanto, establecer el análisis en # reposo durante el tiempo que indica THOROUGH_PROBE_INTERVAL. sleep $PROBE_INTERVAL # Ejecutar una orden nslookup de la dirección IP en la que sirve DNS. hatimerun -t $PROBE_TIMEOUT /usr/sbin/nslookup $DNS_HOST $DNS_HOST \ > $DNSPROBEFILE 2>&1 retcode=$? if [ $retcode -ne 0 ]; then probefail=1 fi # Asegurarse de que la respuesta a nslookup provenga del servidor # de HA-DNS y no de otro servidor de nombres mencionado en el # archivo /etc/resolv.conf. if [ $probefail -eq 0 ]; then # Obtener el nombre del servidor que ha respondido a la consulta 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 |