#!/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