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
|