1
0
Fork 0

nagios/glue_records: standalone + warn if no IP

This commit is contained in:
Chl 2020-01-05 20:18:35 +01:00
parent 90a94aa61a
commit 8e37cb2478

View file

@ -8,22 +8,29 @@
# Stop at the first non-catched error # Stop at the first non-catched error
set -e set -e
# Output
OUTPUT_EXIT_STATUS=0
OUTPUT_DETAIL_OK=""
OUTPUT_DETAIL_WARNING=""
OUTPUT_DETAIL_CRITICAL=""
#OUTPUT_PERFDATA=""
# Defaults
CHECK_SOA=1
# For monitoring plugins # For monitoring plugins
PROGPATH=$( echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,' ) PROGPATH=$( echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,' )
REVISION="0.1" REVISION="0.1"
# Include check_range() # Include check_range()
. $PROGPATH/utils.sh #. $PROGPATH/utils.sh
# No need for check_range() at the moment, we just copy
# the states to be standalone (easier to use that way)
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4
# Defaults
CHECK_SOA=1
# Output
OUTPUT_EXIT_STATUS=$STATE_OK
OUTPUT_DETAIL_OK=""
OUTPUT_DETAIL_WARNING=""
OUTPUT_DETAIL_CRITICAL=""
#OUTPUT_PERFDATA=""
# #
# Help function # Help function
@ -88,6 +95,11 @@ while [ "$#" -gt 0 ]; do
# Query this TLD server on our domain and loop on each IP address "additionally" # Query this TLD server on our domain and loop on each IP address "additionally"
# given, aka. the glue records # given, aka. the glue records
LIST_IP_NS_SERVERS="$( dig +norec +nocomments +noquestion +nostats +nocmd @"$NS_TLD" "$DOMAIN" NS | sed -n 's/.*IN[[:space:]]\+\(A\|AAAA\)[[:space:]]\+\(.*\)$/\2/p' )" LIST_IP_NS_SERVERS="$( dig +norec +nocomments +noquestion +nostats +nocmd @"$NS_TLD" "$DOMAIN" NS | sed -n 's/.*IN[[:space:]]\+\(A\|AAAA\)[[:space:]]\+\(.*\)$/\2/p' )"
if [ -z "$LIST_IP_NS_SERVERS" ] && [ "$OUTPUT_EXIT_STATUS" -ne "$STATE_CRITICAL" ]; then
OUTPUT_EXIT_STATUS=$STATE_WARNING
OUTPUT_DETAIL_WARNING="$OUTPUT_DETAIL_WARNING No glue records for domain $DOMAIN ?"
continue
fi
for IPADDR in $LIST_IP_NS_SERVERS; do for IPADDR in $LIST_IP_NS_SERVERS; do
# Query our server # Query our server
OUTPUT=$( dig @"$IPADDR" $DOMAIN SOA +short 2>&1 ) OUTPUT=$( dig @"$IPADDR" $DOMAIN SOA +short 2>&1 )
@ -107,7 +119,7 @@ while [ "$#" -gt 0 ]; do
# Check that SOA records are all the same # Check that SOA records are all the same
if [ "$CHECK_SOA" -ne 0 ] && [ "$OUTPUT_EXIT_STATUS" -ne "$STATE_CRITICAL" ] && [ "$( echo "$LIST_SOA" | uniq | wc -l )" -ne 1 ]; then if [ "$CHECK_SOA" -ne 0 ] && [ "$OUTPUT_EXIT_STATUS" -ne "$STATE_CRITICAL" ] && [ "$( echo "$LIST_SOA" | uniq | wc -l )" -ne 1 ]; then
OUTPUT_EXIT_STATUS=$STATE_WARNING OUTPUT_EXIT_STATUS=$STATE_WARNING
OUTPUT_DETAIL_WARNING="SOA records discrepancies for domain $DOMAIN : $LIST_SOA" OUTPUT_DETAIL_WARNING="$OUTPUT_DETAIL_WARNING SOA records discrepancies for domain $DOMAIN : $LIST_SOA"
fi fi
# Clean up after each domain # Clean up after each domain