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,m 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 |