#!/bin/sh - # $OpenBSD: nslookup,v 1.2 1997/03/12 10:41:55 downsj Exp $ # # @(#)nslookup e07@nikhef.nl (Eric Wassenaar) 940919 # # Author: E.Wassenaar, Nikhef-H # Version: 19-SEP-1994 # Revision: # # This utility emulates nslookup as a wrapper to host. # It performs most, but not all, functions. exec=echo exec= # ---------------------------------------------------------------------- # Setup environment. # ---------------------------------------------------------------------- # This is where the ``host'' executable lives. BINDIR=/usr/local/bin PATH=${BINDIR}:/bin:/usr/bin:/usr/ucb ; export PATH cmd=`basename $0` options="[-l]" usage="Usage: $cmd $options [server]" # ---------------------------------------------------------------------- # Exit codes from # ---------------------------------------------------------------------- EX_OK=0 EX_USAGE=64 EX_UNAVAILABLE=69 # ---------------------------------------------------------------------- # Setup defaults. # ---------------------------------------------------------------------- name="" zone="" type="" class="" server="" debug="" verbose="" norecurse="" vc="" # ---------------------------------------------------------------------- # Process arguments. # ---------------------------------------------------------------------- for i do if [ "X$server" != "X" ] then echo "$usage" 1>&2 ; exit $EX_USAGE fi case "$i" in -d) exec=echo ;; -l) server=`hostname` ;; -*) echo "$cmd: Unknown option $i" 1>&2 ; exit $EX_USAGE ;; *) server="$i" ;; esac done # ---------------------------------------------------------------------- # Choose between BSD or SYSV echo command. # ---------------------------------------------------------------------- n=`echo -n` if [ "$n" = "-n" ] then c='\c' ; n='' else n='-n' ; c='' fi # ---------------------------------------------------------------------- # Main loop. # ---------------------------------------------------------------------- trap continue 2 while echo $n "> $c" ; read line do case "$line" in "") continue ;; *\**) continue ;; *\!*) continue ;; *\?*) line="help" ;; esac set - $line command="$1" case "$command" in help) cat <]FILE - copy resource record output also to FILE ! ;; exit|quit) break ;; set) option="$2" case "$option" in ""|all) echo "name=$name" echo "zone=$zone" echo "server=$server" echo "set type=$type" echo "set class=$class" echo "set debug=$debug" echo "set verbose=$verbose" echo "set norecurse=$norecurse" echo "set vc=$vc" ;; debug|debu|deb|de|d) debug="-d $debug" ;; nodebug|nodebu|nodeb|node|nod) debug="" ;; d2) debug="-d -d" verbose="-v -v" ;; nod2) debug="" verbose="" ;; verbose|verbos|verbo|verb|ver|ve|v) verbose="-v $verbose" ;; noverbose|noverbos|noverbo|noverb|nover|nove|nov) verbose="" ;; recurse|recurs|recur|recu|rec|re|r) norecurse="" ;; norecurse|norecurs|norecur|norecu|norec|nore|nor) norecurse="-r" ;; vc) vc="-u" ;; novc) vc="" ;; querytype=*|querytyp=*|queryty=*|queryt=*|\ query=*|quer=*|que=*|qu=*|q=*|\ type=*|typ=*|ty=*|t=*) type=`echo $option | sed 's/.*=//'` if [ "X$type" != "X" ] then type="-t $type" fi ;; querytype|querytyp|queryty|queryt|\ query|quer|que|qu|q|\ type|typ|ty|t) type="" ;; class=*|clas=*|cla=*|cl=*|c=*) class=`echo $option | sed 's/.*=//'` if [ "X$class" != "X" ] then class="-c $class" fi ;; class*|clas*|cla*|cl*|c*) class="" ;; *) echo "Unknown option $option" ;; esac ;; server) nserver="$2" if [ "X$nserver" = "X" ] then if [ "X$server" = "X" ] then echo "No server defined" else echo "server=$server" fi else server="$nserver" fi ;; ls) nzone="$2" if [ "X$nzone" = "X" ] then if [ "X$zone" = "X" ] then echo "No zone defined" continue fi else zone="$nzone" fi file=`echo "$3$4" | sed 's/>*//'` if [ "X$file" != "X" ] then file="-f $file" fi options="$debug $verbose $norecurse $vc $file" $exec host $options $type $class -l $zone $nserver ;; [a-zA-Z0-9]*) name="$1" nserver="$2" if [ "X$nserver" = "X" ] then nserver="$server" fi options="$debug $verbose $norecurse $vc" $exec host $options $type $class $name $nserver ;; *) echo "Unknown command $command" ;; esac done exit $EX_OK