4.4BSD/usr/src/contrib/bind-4.9/contrib/misc/checkdns.shar

#Date:     Mon, 26 Apr 93 9:13:55 MET DST
#From: Hans van Staveren <sater@cs.vu.nl>
#To: bind@ucbarpa.berkeley.edu
#Subject:  Re:  send me your tools
#Message-Id:  <9304260913.aa18851@sater.cs.vu.nl>
#
#We daily call the following script to check forward/reverse mapping
#consistency:
#
#/usr/share/local/script/checkDNS\
#        cs.vu.nl am.cs.vu.nl 192.31.231\
#        130.37.16 130.37.18 130.37.20 130.37.22\
#        130.37.24 130.37.26 130.37.28 130.37.30>/tmp/chk.$$
#
#No documentation I am afraid. Just run it and see what is reported.
#
#	Hans
#
: This is a shar archive.  Extract with sh, not csh.
: This archive ends with exit, so do not worry about trailing junk.
echo 'Extracting checkDNS'
sed 's/^X//' > checkDNS << '+ END-OF-FILE checkDNS'
X#!/bin/sh
X# Script to check forward/reverse name mapping consistency
X# Author: Hans van Staveren <sater@cs.vu.nl>
X#
XPATH=/usr/local/bin:/usr/ucb:/usr/bin
Xcase $# in
X0) echo "Usage: $0 [-p] [domain or network] ...";exit;
Xesac
Xping=no
Xcase $1 in
X-p*)	ping=yes;shift;;
Xesac
Xfor domain
Xdo
X    case $domain in
X    *[A-Za-z]*)
X	host -l $domain|sort -u|grep 'has address'|
X		grep -v -e '-net[0-9]'|grep -v localhost|
X	while read hostname has address ipaddr
X	do
X		revname=`host $ipaddr 2>/dev/null|sed -n 's/^Name: //p'`
X		if [ -z "$revname" ]
X		then revname="black-hole"
X		fi
X		hostname=`echo $hostname|tr '[A-Z]' '[a-z]'`
X		revname=`echo $revname|tr '[A-Z]' '[a-z]'`
X		if [ $hostname != $revname -a $revname != localhost ]
X		then echo "$hostname -> $ipaddr -> $revname"
X		fi
X		case $ping in
X		yes)
X			if /usr/etc/ping $hostname 5 >/dev/null 2>&1
X			then : nothing
X			else
X				echo $hostname does not respond
X			fi
X			;;
X		esac
X	done
X	;;
X    *)
X	# Only class C style networks work currently
X	netdom=`echo $domain|sed 's/\(.*\)\.\(.*\)\.\(.*\)/\3.\2.\1/'`.in-addr.arpa
X	host -l $netdom|sort -u|grep '^[^0].* PTR '|
X	while read enc_ipaddr PTR hostname
X	do
X		ipaddr=`echo $enc_ipaddr|sed 's/\(.*\)\.\(.*\)\.\(.*\)\.\(.*\)\.IN.*/\4.\3.\2.\1/'`
X		if host $hostname 2>/dev/null|grep -s "has address $ipaddr"
X		then
X			: hunky dory
X		else
X			echo "$ipaddr -> $hostname, but no A record"
X		fi
X		case $ping in
X		yes)
X			if /usr/etc/ping $hostname 5 >/dev/null 2>&1
X			then : nothing
X			else
X				echo $hostname does not respond
X			fi
X			;;
X		esac
X	done
X	;;
X    esac
Xdone
+ END-OF-FILE checkDNS
chmod 'u=rwx,g=rx,o=rx' 'checkDNS'
echo 'SENT: -rwxr-xr-x  1 sater        1554 Mar 19  1992 checkDNS'
echo -n 'RCVD: '
/bin/ls -l checkDNS
exit 0