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

📄 lamers.sh

📁 早期freebsd实现
💻 SH
字号:
#!/bin/shPATH=:/bin:/usr/bin:/usr/ucb:/usr/local/binLOGFILE=/usr/spool/log/namedMAILMSG=/usr/tmp/mailmsg$$LAMERS=/usr/tmp/lamers$$MSGFILE=/usr/local/bin/lamer-messageLAMEREPORT=/tmp/.lamereport$$REPORT=/tmp/.report.$$WEEKFILE=/usr/tmp/week$$HOSTMASTER="lame-delegations@terminator.rs.itd.umich.edu"# -------------------------------------------------------------#  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.##  Lame delegation notifier#  Author:  Bryan Beecher#  Last Modified:  10/27/92##  To make use of this software, you need to be running the#  University of Michigan release of BIND 4.8.3, or any version#  of named that supports the LAME_DELEGATION patches posted to#  USENET.  The U-M release is available via anonymous ftp from#  terminator.rs.itd.umich.edu:/dns/bind4.8.3.tar.Z.##  You must also have a copy of query(1) and host(1).  These#  are also available via anonymous ftp in the aforementioned#  place.# -------------------------------------------------------------# -------------------------------------------------------------#  handle arguments# -------------------------------------------------------------#	-d <day>#	This flag is used to append a dot-day suffix to the LOGFILE.#	Handy where log files are kept around for the last week#	and contain a day suffix.##	-f <logfile>#	Change the LOGFILE value altogether.##	-w#	Count up all of the DNS statistics for the whole week.##	-v#	Be verbose.##	-t#	Test mode.  Do not send mail to the lame delegation#	hostmasters.# -------------------------------------------------------------VERBOSE=0TESTMODE=0while [ $# != 0 ] ; do	case "$1" in		-d)		LOGFILE=$LOGFILE"."$2		shift		;;		-f)		LOGFILE=$2		shift		;;		-w)		cat $LOGFILE* > $WEEKFILE		LOGFILE=$WEEKFILE		;;		-v)		VERBOSE=1		;;		-t)		TESTMODE=1		;;	esac	shiftdone#--------------------------------------------------------------------------#  Clean up and exit on a HUP, INT or QUIT#--------------------------------------------------------------------------trap "rm -f $LAMERS $MAILMSG $LAMEREPORT $WEEKFILE ; exit" 1 2 3#--------------------------------------------------------------------------#  See if there are any lamers#--------------------------------------------------------------------------grep "Lame" $LOGFILE | tr A-Z a-z | grep -v "*" | awk '{	print substr($16, 2, length($16) - 3), $12 }' |	sort | uniq | awk '{		printf("%s %s\n", $1, $2)}' > $LAMERSif [ ! -s $LAMERS ] ; then	exit 0fiif [ $VERBOSE -eq 1 ] ; then	echo "Found" `awk 'END { print NR }' $LAMERS` "lame delegations"fi#--------------------------------------------------------------------------#  There were lamers; send them mail#--------------------------------------------------------------------------touch $LAMEREPORTNAME=""while read DOMAIN IPADDR ; do	#-----------------------------------------------------------	# Echo args if verbose	#-----------------------------------------------------------	if [ $VERBOSE -eq 1 ] ; then		echo "$IPADDR may be a lame delegation for $DOMAIN"	fi	#-----------------------------------------------------------	# Lookup the SOA record form $DOMAIN.  A really broken name	# server many have more than one SOA for a domain, so exit	# after finding the first one.  Send it to the local hostmaster	# if we cannot find the proper one.	#-----------------------------------------------------------	if [ $VERBOSE -eq 1 ] ; then		echo "Looking up the hostmaster for $DOMAIN"	fi	HOSTMASTER=`query -h $DOMAIN -t SOA 2> /dev/null | awk '/mail addr/ { print $4 ; exit }' | sed -e 's/\./@/'`	NAME=`host $IPADDR 2> /dev/null`	if [ -z ""$HOSTMASTER ] ; then		if [ -z ""$NAME ] ; then			HOSTMASTER="hostmaster"		else			HOSTMASTER="postmaster@"$NAME		fi	fi	#-----------------------------------------------------------	# Find the name associated with IP address $IPADDR.  Query	# the nameserver at that address:  If it responds listing	# itself as a domain namserver, then it is lame; if it isn't	# in the list, then perhaps the lame delegation alert was	# spurious.	#-----------------------------------------------------------	if [ $VERBOSE -eq 1 ] ; then		echo "Making sure that $IPADDR is listed as a NS for $DOMAIN"	fi	if [ -n ""$NAME ] ; then		query -n $IPADDR -h $DOMAIN 2>&1 | grep "domain name" | grep -i $NAME > /dev/null		if [ $? -eq 1 -a $VERBOSE -eq 1 ] ; then			echo $NAME does not seem to be a nameserver for $DOMAIN			continue		fi	fi	#-----------------------------------------------------------	# If the delegation is no longer lame, don't send mail.	# We do the query twice; the first answer could be authori-	# tative even if the nameserver is not performing service	# for the domain.  If this is the case, then the second	# query will come from cached data, and will be exposed	# on the second query.  If the resolver returns trash, the	# entire set of flags will be set.  In this case, don't	# count the answer as authoritative.	#-----------------------------------------------------------	if [ $VERBOSE -eq 1 ] ; then		echo "Making sure that $IPADDR is not providing authoritative data now"	fi	query -n $IPADDR -h $DOMAIN > /dev/null 2>&1 	query -n $IPADDR -h $DOMAIN 2>&1 | grep header | grep aa | grep -v tc > /dev/null	if [ $? -eq 0 ] ; then		if [ $VERBOSE -eq 1 ] ; then			if [ -n ""$NAME ] ; then				echo $NAME seems to be serving $DOMAIN OK now			else				echo $I seems to be serving $DOMAIN OK now			fi		fi		continue	fi	#-----------------------------------------------------------	# Notify the owner of the lame delegation, and also notify	# the local hostmaster.	#-----------------------------------------------------------	if [ $TESTMODE -eq 0 ] ; then		if [ $VERBOSE -eq 1 ] ; then			echo "Sending mail to $HOSTMASTER about lame server $IPADDR for domain $DOMAIN"		fi		echo "To: " $HOSTMASTER > $MAILMSG		echo "Subject: $IPADDR appears to be a lame delegation for $DOMAIN" >> $MAILMSG		cat $MSGFILE >> $MAILMSG		if [ -z ""$NAME ] ; then			NAME=" "		fi		sed -e "s|%DOMAIN%|$DOMAIN|" -e "s|%SERVER%|$NAME|" -e "s|%IPADDR%|$IPADDR|" $MAILMSG |			/usr/lib/sendmail -t -fdns-maintenance	fi	echo $IPADDR $DOMAIN >> $LAMEREPORTdone < $LAMERS#--------------------------------------------------------------------------# No news is good news#--------------------------------------------------------------------------if [ -s $LAMEREPORT ] ; then	rm -f $REPORT	echo "The following lame delegations were discovered by the U-M namservers" >> $REPORT	echo "during the past two weeks of operation." >> $REPORT	echo " " >> $REPORT	echo "This nameserver  was found to be a lame delegation for this domain" >> $REPORT	echo "---------------  -------------------------------------------------" >> $REPORT	awk '{ printf("%-15s  %s\n", $1, $2) }' $LAMEREPORT >> $REPORT	Mail -s "U-M lame delegation report" $HOSTMASTER < $REPORTfi#--------------------------------------------------------------------------# Tidy up#--------------------------------------------------------------------------rm -f $LAMERS $MAILMSG $LAMEREPORT $WEEKFILE $REPORT

⌨️ 快捷键说明

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