⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 doc

📁 早期freebsd实现
💻
📖 第 1 页 / 共 3 页
字号:
#!/bin/csh -f####################################################################       Doc - Version  2.0.1 (9/14/90)#	      [Version 2.0 8/22/90]#             [Version 1.1 5/17/90]#             [Version 1.0 4/25/90]##       Developed by: Steve Hotz (hotz@isi.edu)#                     Paul Mockapetris (pvm@isi.edu)#       USC Information Sciences Institute (USC-ISI)#       Marina del Rey, California#       1990##       Implementation debugging & design comments by#       some "dandy" folks:#           Andrew Cherenson   Steve Hubert   Edward Vielmetti##    This program is Public Domain, and may be freely distributed#    and used for any non-profit purpose as long as this notice#    is not removed.#######################################################################################################################################   Any configuration changes that you may need to make will#   likely be in the next few areas.########################################################################### alias to DiG Version 2.0 (if not in path)### alias dig '/nfs/u5/hotz/bin.sun3/dig'######## Differences in 'tr' program##### System V's tr requires []### set nonomatch# set tolower="tr '[A-Z]' '[a-z]'"####### BSD version##set tolower="tr 'A-Z' 'a-z'"####XX# ######## where are auxiliary awk files (doc[134].awk)#### Need to set this if you want to include 'doc' in your path,##  and run while in other working directories.###set auxd=/nfs/u5/hotz/auto/set auxd=""######## Number of dig retries#### Dig default is four, but this makes for a considerable wait## when servers are down.  Two retries seems to be a good trade-off## between time and completeness.##set RET="+ret=2"######## Default standard output options##set eflag=0	# error info onlyset wflag=0     # warning infoset vflag=0	# verboseset dflag=0	# debug -- *real* verboseset pflag=0     # skip parent domain testing######################################################################################################################################## Unless you want to add/modify tests that are being made,## you will likely not need to change things below this line.##onintr cleanupset version = "Doc-2.0.1"set ddflag=0    ## DDBUG numeric checkpoints for developmentset error = (FORMAT_ERROR SERVER_FAIL NXDOMAIN UNIMPLEMENTED \             REQ_REFUSED CONN_REFUSED TIME_OUT CONN_REFUSED \             UNKNOWN UNEXPECTED)set fferror=0    ## count of errors foundset ffwarn=0     ## count of warningsset ffallone=0     ## unfinished business (dig failed to parent servers)set ffalltwo=0     ## unfinished business (dig failed to AUTH servers)set aborted=0    ######XX# ###########################################  Parse arguments && initialization#while ("$1" =~ -*)  switch ($1)    case "-p":      set pflag=1      breaksw    case "-d":      set dflag=1    case "-v":      set vflag=1    case "-w":      set wflag=1    case "-e":      set eflag=1    default:      breaksw  endswshiftendif ($1 == "") goto showif ($1 =~ *.) then  set dom=$1else  set dom=${1}.endifif ($2 == "") then   set dad=`echo $dom | sed "s/[a-zA-Z0-9-]*.//p"`   if ("$dad" == "") then      set dad="."   else      set dad = $dad[1]  ## sed variants do different things with p   endifelse   if ($2 =~ *.) then     set dad=$2   else     set dad=${2}.   endifendifset stat = `dig | awk '/DiG/ && / 2./ {print "ok"; exit}'`if ($stat != "ok") thenecho "Abort: This program requires DiG Version-2.x to run."exit 1endif####XX# set agree=0echo "${version}: Starting test of $dom   parent is $dad"echo "${version}: Test date - `date`"echo "${version}: Starting test of $dom   parent is $dad" >> log.$domecho "${version}: Test date - `date`" >> log.$domecho "" >> logXX.$domecho "######## Query Log ########" >> logXX.$domecho "" >> logXX.$domset domservall=""############################################################# Get nameservers for parent zone##if ( -e DNsrv.$dad ) thencat DNsrv.${dad} > $dom.$dad.nsecho "Note: Using pre-specified $dad NSlist from file." >> log.$domif ($vflag) echo "Note: Using pre-specified $dad NSlist from file."goto skip1endifdig ns ${dad} +pfset=0xa224 | awk '$3=="NS" {print $4}' | $tolower > $dom.$dad.nsset stat = $statusif ($stat != 0) then   set estr= $error[$stat]   echo "DIGERR ($estr): dig for parent NS failed (dig ns $dad)" >> log.$dom   echo "DIGERR ($estr): dig for parent NS failed (dig ns $dad)"   if ($ddflag) echo "DDBUG: 1"   goto dig1err1endifset dadcount=`wc -l < $dom.$dad.ns`if ($dadcount == 0) then   echo "ABORT: No NS found for parent domain $dad" >> log.$dom   echo "ABORT: No NS found for parent domain $dad"   @ ffallone++   if ($ddflag) echo "DDBUG: 2"   goto dig1err2endifskip1:echo "## Nameservers for $dad (dig ns $dad):" >> logXX.$domecho "" >> logXX.$domcat  $dom.$dad.ns >> logXX.$domecho "===================" >> logXX.$domecho "" >> logXX.$dom####XX# ############################################################ Check SOA's of parent domain at each server for parent##set sns=""set aafile=""set aaserv=""set noaaserv=""set cntone = 0if ($pflag) thenecho "Note: Skipping parent domain testing" >> log.$domif ($vflag) echo "Note: Skipping parent domain testing"set aaserv = `cat $dom.$dad.ns`goto skip2endifforeach i (`cat $dom.$dad.ns`)   if ($dflag) echo DEBUG: digging @$i for soa of $dad  if ($dflag) echo DEBUG: digging @$i for soa of $dad >> log.$dom  dig @$i soa $dad +norec $RET +pfset=0xa224 | $tolower > $dom.$dad.soa.$i  set stat = $status  if ($stat != 0) then     set estr=$error[$stat]echo "DIGERR ($estr): dig @$i for SOA of parent ($dad) failed" >> log.$domecho "DIGERR ($estr): dig @$i for SOA of parent ($dad) failed"     rm $dom.$dad.soa.$i     if ($ddflag) echo "DDBUG: 3"     continue  endif  echo "## SOA record for $dad domain from nameserver $i" >> logXX.$dom  echo "" >> logXX.$dom  cat  $dom.$dad.soa.$i >> logXX.$dom  echo "===================" >> logXX.$dom  echo "" >> logXX.$dom  set serial=`awk -f ${auxd}doc1.awk $dom.$dad.soa.$i`  set stat=$status  if ($vflag) echo "soa @$i for $dad has serial: $serial"  echo "soa @$i for $dad has serial: $serial" >> log.$dom#####XX# ############################################################## Examine SOA information for parent from parent servers#### fix for shells which return unsigned 8 bit exit codes  if ($stat > 127) then     @ stat = $stat - 256  endif  if ($stat < 0) then     @ ffwarn++     set noaaserv = ($noaaserv $i)     echo "WARNING: non-authoritative answer for $dad from $i" >> log.$dom     if ($wflag) echo "WARNING: non-authoritative answer for $dad from $i"     if ($ddflag) echo "DDBUG: 4"  else if ($stat == 0) then     @ ffwarn++     echo "WARNING: no SOA record for $dad from $i" >> log.$dom     if ($wflag) echo "WARNING: no SOA record for $dad from $i"     if ($ddflag) echo "DDBUG: 5"  else if ($stat > 1) then     set aaserv = ($aaserv $i)     @ ffwarn++     echo "WARNING: multiple SOA records found for $dad from $i" >> log.$dom     if ($wflag) echo "WARNING: multiple SOA records found for $dad from $i"     if ($ddflag) echo "DDBUG: 6"  else############################################################# Look for multiple serial numbers among SOA records from## servers that are authoritative for parent domain.##   aafile/aaserve:  files/list of  authoritative servers for parent##   noaaserv:        servers not authoritative for parent##    set aafile = ($aafile $dom.$dad.soa.$i)    set aaserv = ($aaserv $i)    @ cntone++    set another=1    foreach j ($sns)      if ($serial == $j) then	 set another=0         break      endif    end    if ($another) then         set sns=($sns $serial)    endif  endifend	## foreach#####XX# if ($#sns > 1) then  @ ffwarn++  echo "WARNING: Found $#sns unique SOA serial #'s for $dad" >> log.$dom  if ($wflag) echo "WARNING: Found $#sns unique SOA serial #'s for $dad"  if ($ddflag) echo "DDBUG: 7"else if ($sns != "") then   if ($cntone > 1) then      echo "SOA serial #'s agree for $dad domain" >> log.$dom      if ($vflag) echo "SOA serial #'s agree for $dad domain"   endifelse   echo "SYSerr: No servers for $dad returned SOAs ..." >> log.$dom   echo "SYSerr: No servers for $dad returned SOAs ..."   if ($ddflag) echo "DDBUG: 8"   goto dig2err1endif#####XXX At this point, might want to add check to compare entire#####XXX SOA (not just serial #) -- appropriate SOAs in ${aafile}s################################################################################################################## Ask all autoritative servers of parent zone for## NS records of domain being tested.##skip2:set nslists=""		# files with lists of NS recs (unique)set nslistsaa=""	# (as above) from servers claim AUTHset nsdad=""		# server list not  AUTH for domainset nsdadaa=""		# server list also AUTH for domainset nsdadno=0set nsdadnoaa=0foreach i ($aaserv)   dig @$i ns $dom +pfset=0xa7e4 +norec $RET | $tolower > $dom.raw.$i   set stat = $status   if ($stat != 0) then      set estr=$error[$stat]      echo "DIGERR ($estr): dig @$i for NS of $dom failed" >> log.$dom      echo "DIGERR ($estr): dig @$i for NS of $dom failed"      if ($ddflag) echo "DDBUG: 9"      continue   endif   echo "## NS records for $dom domain from nameserver $i" >> logXX.$dom   echo "" >> logXX.$dom   cat  $dom.raw.$i >> logXX.$dom   echo "===================" >> logXX.$dom   echo "" >> logXX.$dom####XX# ######################################################  Examine query response:  (1) find list of nameservers,##  (2) determine if authoritative response, (3) look for glue##   awk -f ${auxd}doc3.awk $dom.raw.$i | sort -u > $dom.ns.$i   set stat=$status   set another=1## fix for shells which return unsigned 8 bit exit codes   if ($stat > 127) then        @ stat = $stat - 256   endif   if ($stat < 0) then	set isaa = 1        @ stat = $stat + 127   else        set isaa = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -