#!/bin/bash
#< Query multiple nameservers for specific records
BASENAME="/bin/basename"
DIG="/usr/local/bin/dig"
ECHO="/bin/echo"
DIGOPTS="+noadd +nostats +noquestion +nocomments +nocmd +time=2"
SERVERS="192.168.0.1 192.168.0.2"
THISPROG=$( ${BASENAME} $0 )
NAME=""
RECORDTYPE=""
VERBOSE=0
function print_usage {
{
${ECHO} "Usage: ${THISPROG} [-hv] -r <recordtype> -n <name>"
${ECHO} " -n Name, e.g. foo.com.au"
${ECHO} " -r Recordtype, e.g. ns"
${ECHO} " -v Verbose"
${ECHO} " -h Print this help messsage"
} >&2
}
function check_args {
if [ "${NAME}" = "" ]; then
print_usage && exit 1
elif [ "${RECORDTYPE}" = "" ]; then
print_usage && exit 1
fi
}
function perform_checks {
for SERVER in ${SERVERS}; do
${ECHO} "====[ dig ${RECORDTYPE} ${NAME} @${SERVER} ]"
(( VERBOSE )) && {
${DIG} ${RECORDTYPE} ${NAME} @${SERVER}
} || {
${DIG} ${DIGOPTS} ${RECORDTYPE} ${NAME} @${SERVER}
}
done
}
while getopts ":hn:r:v" OPTION; do
case ${OPTION} in
"h") print_usage && exit 0 ;;
"n") NAME="${OPTARG}" ;;
"r") RECORDTYPE="${OPTARG}" ;;
"v") VERBOSE=1 ;;
* ) print_usage && exit 1 ;;
esac
done
shift $(( ${OPTIND} - 1 ))
if [ "$#" -ne "0" ]; then
print_usage && exit 1
fi
check_args
perform_checks
exit 0