Das Testsignal selbst besteht aus einer while-Endlosschleife aus nslookup-Befehlen. Vor der while-Schleife wird eine temporäre Datei für die nslookup-Antworten eingerichtet. Die Variablen probefail und retries werden auf 0 initialisiert.
# Temporäre Datei für nslookup-Antworten konfigurieren. DNSPROBEFILE=/tmp/.$RESOURCE_NAME.probe probefail=0 retries=0 |
Die while-Schleife selbst hat folgende Aufgaben:
Festlegen des Ruheintervalls für das Testsignal.
Verwenden von hatimerun zum Auslösen von nslookup durch Übergabe des Probe_timeout-Werts und Identifizieren des Zielhosts.
Festlegen der probefail-Variable, basierend auf dem Erfolg oder Fehlschlag des nslookup-Rückgabecodes.
Wenn probefail auf 1 (Fehlschlag) eingestellt ist, wird überprüft, ob die Antwort auf nslookup vom Beispieldatendienst und nicht von einem anderen DNS-Server kam.
Es folgt der while-Schleifencode.
while :
do
# Das Intervall, in dem das Testsignal ausgeführt werden muss, wird in der
# Eigenschaft THOROUGH_PROBE_INTERVAL angegeben. Daher wird das Ruhen
# des Testsignals auf eine Dauer von THOROUGH_PROBE_INTERVAL eingestellt.
sleep $PROBE_INTERVAL
# nslookup-Befehl für die IP-Adresse des DNS ausführen.
hatimerun -t $PROBE_TIMEOUT /usr/sbin/nslookup $DNS_HOST $DNS_HOST \
> $DNSPROBEFILE 2>&1
retcode=$?
if [ $retcode -ne 0 ]; then
probefail=1
fi
# Sicherstellen, dass die Antwort auf nslookup vom HA-DNS-
# Server und nicht von einem anderen in der /etc/resolv.conf-Datei
# genannten Namensserver stammt.
if [ $probefail -eq 0 ]; then
# Namen des Servers abrufen, der auf die nslookup-Abfrage geantwortet hat.
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
|