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

📄 zt

📁 早期freebsd实现
💻
字号:
#!/bin/sh# -------------------------------------------------------------#  Copyright (c) 1991 Regents of the University of Michigan.#  All rights reserved.##  Redistribution and use is permitted provided that this notice #  is preserved and that due credit is given to the University of #  Michigan. The name of the University may not be used to endorse #  or promote products derived from this software without specific #  prior written permission. This software is provided "as is" #  without express or implied warranty.# -------------------------------------------------------------RECURSE=0 DEBUG=0 XFER=/etc/named-xfer QUERY=/usr/local/bin/query# -------------------------------------------------------------#  Do args#	-R	Recursive.  Grab all zones below give zone too.#	-d	Debug.  Print handy debugging info.# -------------------------------------------------------------if [ $# = 0 ] ; then	echo "Usage: [-R] [-d] zone"	exit -1fiwhile [ $# != 1 ] ; do	case "$1" in		-R)		RECURSE=1		;;		-d)		DEBUG=1		;;		-?)		echo Illegal arg $1		exit -1		;;	esac	shiftdoneZONELIST=$1while [ 1 ] ; do	#----------------------------------------------------	# Loop through the list of zones	#----------------------------------------------------	DONE=1	for ZONE in $ZONELIST ; do		#----------------------------------------------------		#  Get the addr of the zone's nameservers		#----------------------------------------------------		$QUERY -t NS -h $ZONE > /tmp/zt.$$ 2> /dev/null		if [ $? -ne 0 ] ; then			echo Zone $zone unknown or nameserver unavailable			exit -1		fi		NSLIST=`cat /tmp/zt.$$ | awk '/address/ { print $4 }'`		#----------------------------------------------------		#  Use named-xfer to bring over a copy of the zone		#  Use 0 as the serial # since will likely be less		#  than the current serial number in the SOA		#----------------------------------------------------		for I in $NSLIST ; do			if [ $DEBUG = 1 ] ; then				echo Trying nameserver at address $I			fi			$XFER -z $ZONE -f /tmp/$ZONE.$$ -s 0 $I			if [ $? = 1 ] ; then				grep -v ";" /tmp/$ZONE.$$ |				awk '{					if ($1 == "$ORIGIN") {						origin=$2						if (origin != old) {							old = origin							print $0						}					}					else						print $0				}' >> /tmp/zt.out.$$				if [ $DEBUG = 1 ] ; then					echo Got zone $ZONE				fi				break			elif [ $DEBUG = 1 ] ; then				echo Nameserver $I for $ZONE not working			fi		done		rm -f /tmp/zt.$$		#----------------------------------------------------		#  If we're doing a recursive query, capture the NS		#  records to build a new ZONELIST of subdomains		#----------------------------------------------------		SUBZONES=""		if [ $RECURSE = 1 -a -s /tmp/$ZONE.$$ ] ; then			awk '{				if ($1 == "$ORIGIN")					origin = substr($2, 1, length($2) - 1)				else if ($3 == "NS") {					sub = $1 "." origin					if (sub != zone)						print sub				}			}' zone=$ZONE /tmp/$ZONE.$$ > /tmp/zl.$$			if [ -s /tmp/zl.$$ ] ; then				SUBZONES=`echo $SUBZONES ; sort -u /tmp/zl.$$`				DONE=0			fi			rm -f /tmp/zl.$$		fi		rm -f /tmp/$ZONE.$$	done	#----------------------------------------------------	#  If we weren't recursive, or we were recursive and	#  have run out of subdomains, we're done	#----------------------------------------------------	if [ $DONE = 1 ] ; then		if [ -s /tmp/zt.out.$$ ] ; then			cat /tmp/zt.out.$$		else			echo "Could not perform a zone transfer of $1"		fi		rm -f /tmp/zt.out.$$		exit 0	else		ZONELIST=$SUBZONES	fidoneexit 0

⌨️ 快捷键说明

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