|
@@ -0,0 +1,39 @@
|
|
|
+#!/bin/sh
|
|
|
+
|
|
|
+while getopts "H:s:" opt; do
|
|
|
+ case "$opt" in
|
|
|
+ H) HOST="$OPTARG" ;;
|
|
|
+ s) SERVER="$OPTARG" ;;
|
|
|
+ *) echo "Usage: $0 -H host -s server"; exit 3 ;;
|
|
|
+ esac
|
|
|
+done
|
|
|
+
|
|
|
+if [ -z "$SERVER" ]; then
|
|
|
+ echo "No DNS Server provided"
|
|
|
+ exit 3
|
|
|
+fi
|
|
|
+
|
|
|
+if [ -z "$HOST" ]; then
|
|
|
+ echo "No host to test provided"
|
|
|
+ exit 3
|
|
|
+fi
|
|
|
+
|
|
|
+# run dig and measure the time it takes to run
|
|
|
+START_TIME=$(date +%s%3N)
|
|
|
+dig_output=$(dig +short +timeout=2 +tries=1 "$HOST" @"$SERVER" 2>/dev/null)
|
|
|
+dig_rc=$?
|
|
|
+dig_output_ips=$(echo "$dig_output" | grep -E '^[0-9.]+$' | sort | paste -sd ',' -)
|
|
|
+END_TIME=$(date +%s%3N)
|
|
|
+ELAPSED_TIME=$((END_TIME - START_TIME))
|
|
|
+
|
|
|
+# validate and perform nagios like output and exit codes
|
|
|
+if [ $dig_rc -ne 0 ] || [ -z "$dig_output" ]; then
|
|
|
+ echo "Domain $HOST was not found by the server"
|
|
|
+ exit 2
|
|
|
+elif [ $dig_rc -eq 0 ]; then
|
|
|
+ echo "DNS OK: $ELAPSED_TIME ms response time. $HOST returns $dig_output_ips"
|
|
|
+ exit 0
|
|
|
+else
|
|
|
+ echo "Unknown error"
|
|
|
+ exit 3
|
|
|
+fi
|