#!/usr/bin/ksh # rmx # Jukka.Inkeri At_sign awot.fi # 29.11.2003 ,ver 2 # lookup reverse host MX or reverse domain or hostname # use dig nameserver="" #------------------------------------------------------------------------- usage() #------------------------------------------------------------------------- { echo "usage: $PRG [-d] [@nameserver] ip mx | net | host| contact" >&2 exit 1 } #------------------------------------------------------------------------- resolvedom() #------------------------------------------------------------------------- { revnet=$(dig $nameserver $revhost ptr | \ sed -n "/^;; AUTHORITY SECTION:/,/;; ADDITIONAL SECTION:/p" | \ grep "^[0-9].*IN.*NS" | tr "\t" " " | cut -d" " -f1 | sort -u -k 1,1) if [ "$func" = "net" ];then echo "$revnet" exit 0 fi dig $nameserver $revnet mx | \ sed -n "/^;; ANSWER SECTION:/,/;; AUTHORITY SECTION:/p" | \ grep "IN.*MX" | tr "\t" " "|tr -s " " | cut -d" " -f6 } #---------------------------------------------------------------------------- resolvehost() #------------------------------------------------------------------------- { func="$1" field="$2" typeset -l func dig $nameserver $revhost $func | \ grep -i "^[^;].*IN.*$func" | tr "\t" " " | tr -s " " | cut -d" " -f$field } #---------------------------------------------------------------------------- # MAIN #---------------------------------------------------------------------------- [ $# -lt 2 ] && usage debug=0 if [ "$1" = "-d" ] ; then shift debug=1 fi case "$1" in \@*) nameserver="$1" shift ;; esac ip="$1" func="$2" case "$func" in contact|mx|net|host|soa|txt) ;; *) usage ;; esac revhost=$(echo "$ip" | \ sed "s/\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\)/\4.\3.\2.\1.in-addr.arpa/") [ "$debug" = "1" ] && echo "Reverse lookup $revhost" case "$func" in net) resolvedom ;; host) resolvehost ptr "5";; mx) resolvehost mx "5,6";; contact) resolvehost soa "6";; [a-z]*) resolvehost $func "5,6";; esac