#!/bin/ksh ############################################################# # # NSSCAN: scans a b or c class ip range for names # # Chuck Geigner: Nov 12, 2001 # # Copyleft 2001. Distribute this script in its entirety as # you wish, keeping all attributions. # OUTFILE="/tmp/nsscan.log" USAGE="Usage: nsscan -[B|C] ipaddr [-s [/path/file]]\ OR: nsscan -d" if [ $# -lt 2 -a "$1" != "-d" ]; then echo "Needs 2 args. " echo $USAGE exit fi if [ ! -f /usr/bin/nslookup -o ! -f /bin/nslookup ]; then echo "Missing prerequisite: nslookup" exit fi Q1=`echo $2 | cut -d. -f1` Q2=`echo $2 | cut -d. -f2` Q3=`echo $2 | cut -d. -f3` Q4=`echo $2 | cut -d. -f4` if [ $# -gt 2 ]; then if [ "$3" = "-save" -o "$3" = "-s" ]; then if [ $# -eq 4 ]; then OUTFILE="$4" elif [ $# -gt 4 ]; then echo "extraneous values given:\c" CT=$# set -A ARGS "$@" while [ $CT -gt 3 ] do CT=`expr $CT - 1` echo ${ARGS[$CT]} done echo "\n\c" exit else echo "Enter name of output file: \c" read OUTFILE fi fi fi if [ "$1" = "-B" ]; then cat /dev/null > $OUTFILE Q4=255 Q3=255 echo "scanning B-class network $Q1.$Q2.0.0..." echo "Proceed? (y/n): \c" read GATE if [ "$GATE" = "y" -o "$GATE" = "Y" ]; then while [ $Q3 -ge 0 ] do while [ $Q4 -ge 0 ] do VAR=`nslookup $Q1.$Q2.$Q3.$Q4|grep -v ddress|grep -v Server|cut -d: -f2|sed "s/ //g"` echo "$VAR $Q1.$Q2.$Q3.$Q4\c" >> $OUTFILE Q4=`expr $Q4 - 1` done Q4=255 Q3=`expr $Q3 - 1` done else echo "Aborting B-class scan..." exit fi elif [ "$1" = "-C" ]; then cat /dev/null > $OUTFILE Q4=0 echo "scanning C-class network $Q1.$Q2.$Q3.0..." while [ $Q4 -le 255 ] do VAR=`nslookup $Q1.$Q2.$Q3.$Q4|grep -v ddress|grep -v Server|cut -d: -f2|sed "s/ //g" 2>/dev/ null` if [ -n "$VAR" ]; then echo "$VAR\t\t$Q1.$Q2.$Q3.$Q4\c" >> $OUTFILE fi Q4=`expr $Q4 + 1` done elif [ "$1" = "-display" -o "$1" = "-d" ]; then if [ ! -f $OUTFILE ]; then echo "$OUTFILE: File not found." exit else more $OUTFILE fi else echo $USAGE exit fi