#!/bin/bash # #/var/tmp/named_dump.db #kill -SIGINT `ps axf | grep named | grep -v grep | awk '{print $1}'` isdigits () { #up to 10 digits. 1998012502 case $1 in [0-9]|[0-9][0-9]|[0-9][0-9][0-9]|[0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]) return 0 #True ;; *) return 1 #False ;; esac } CURRORIGIN="" CURROBJ="" unset F1 F2 F3 F4 F5 F6 F7 read F1 F2 F3 F4 F5 F6 F7 while [ -n "${F1}" ]; do case "${F1}" in "\$ORIGIN") #Change origin CURRORIGIN=`echo ${F2} | sed -e 's/\.$//'` # echo -n -e "origin" # echo -n -e "\t\t${CURRORIGIN}" # echo ;; ";"|";;") #Comment, ignore #FIXME - lines that start w/ semicolonA-Z # echo -n -e "${F1}\t\t" # echo -n comment # echo -n -e "\t\t${CURRORIGIN}" # echo ;; *) #Real DNS record #cases: #; #;; #$ORIGIN org #obj 1111 IN A #obj 1111 IN CNAME #obj 1111 IN NS #obj 1111 IN SOA #1111 IN A #1111 IN MX #1111 IN NS #1111 IN PTR #1111 IN SOA #1111 IN TXT #1111 1111 1111 1111 #SOA record timeouts case "${F3} ${F4}" in "IN A"|"IN CNAME"|"IN HINFO"|"IN MX"|"IN NS"|"IN PTR"|"IN RP"|"IN SOA"|"IN TXT"|"IN WKS") ;; *) case "${F2} ${F3}" in "IN A"|"IN CNAME"|"IN HINFO"|"IN MX"|"IN NS"|"IN PTR"|"IN RP"|"IN SOA"|"IN TXT"|"IN WKS") ;; *) case "${F1} ${F2}" in "IN A"|"IN CNAME"|"IN HINFO"|"IN MX"|"IN NS"|"IN PTR"|"IN RP"|"IN SOA"|"IN TXT"|"IN WKS") ;; *) if isdigits ${F1} && isdigits ${F2} && isdigits ${F3} && isdigits ${F4} ; then echo "NADA" >/dev/null #echo -e "\t\t\t\tnumbers" else echo -e "${F1}\t${F2}\t${F3}\t${F4}" fi ;; esac ;; esac ;; esac # if [ "${F1}" = "IN" ]; then # echo really lazy # F7=${F5} # F6=${F4} # F5=${F3} # F4=${F2} # F3=${F1} # F2="-1" # F1=${CURROBJ} # elif [ "${F2}" = "IN" -a "${F3}" = "SOA" ]; then # #If F1 is all digits, then # #if [ "${F1}" = "`echo ${F1} | sed -e 's/[^0-9]//g'`" ]; then # # # # echo real S.O.A. header, no timeout # F7=${F6} # F6=${F5} # F5=${F4} # F4=${F3} # F3=${F2} # F2="-1" ##FIXME - we need to check to see if F1 is an object or timeout ##Probably yank the check for SOA above. # CURROBJ=${F1} # elif [ "${F2}" = "IN" ]; then # echo lazy # F7=${F6} # F6=${F5} # F5=${F4} # F4=${F3} # F3=${F2} # F2=${F1} # F1=${CURROBJ} # elif [ "${F3}" = "IN" ]; then # echo real # CURROBJ=${F1} # elif [ "${F6}" = ")" ]; then # echo lazy S.O.A. timeouts # elif [ "${F7}" = ")" ]; then # echo real S.O.A. timeouts # else # echo bogus # fi # # echo -n "${F1},${F2},--${F3},${F4},${F5},${F6},${F7}" ## echo -n -e "${F1} ${F2}\t\t" ## echo -n "real record" # echo -n -e "\t\t${CURRORIGIN}" # echo # ;; esac unset F1 F2 F3 F4 F5 F6 F7 read F1 F2 F3 F4 F5 F6 F7 done