1*00b67f09SDavid van Moolenbroek#!/bin/bash 2*00b67f09SDavid van Moolenbroek# 3*00b67f09SDavid van Moolenbroek# Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") 4*00b67f09SDavid van Moolenbroek# 5*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any 6*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above 7*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies. 8*00b67f09SDavid van Moolenbroek# 9*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 10*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11*00b67f09SDavid van Moolenbroek# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 12*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 14*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE. 16*00b67f09SDavid van Moolenbroek 17*00b67f09SDavid van MoolenbroekTOP=$( (cd ../../.. && pwd) ) 18*00b67f09SDavid van Moolenbroekdig=${TOP}/bin/dig/dig 19*00b67f09SDavid van Moolenbroek 20*00b67f09SDavid van Moolenbroekcmd="${dig} -p 5300 @127.127.0.0 txt" 21*00b67f09SDavid van Moolenbroekinner() { 22*00b67f09SDavid van Moolenbroek zone=$1 i=$2 to=$3 23*00b67f09SDavid van Moolenbroek x=$i 24*00b67f09SDavid van Moolenbroek dout=dig$x.out 25*00b67f09SDavid van Moolenbroek tout=time$x.out 26*00b67f09SDavid van Moolenbroek while [ $i -lt $to ] 27*00b67f09SDavid van Moolenbroek do 28*00b67f09SDavid van Moolenbroek case $zone in 29*00b67f09SDavid van Moolenbroek .) zone=;; 30*00b67f09SDavid van Moolenbroek esac 31*00b67f09SDavid van Moolenbroek 32*00b67f09SDavid van Moolenbroek (time -p $cmd $i.${sub}$zone > $dout ) 2> $tout 33*00b67f09SDavid van Moolenbroek s=`sed -n '/real/s/[^0-9]*\([0-9]*\)\..*/\1/p' $tout` 34*00b67f09SDavid van Moolenbroek case $s in 35*00b67f09SDavid van Moolenbroek 0);; 36*00b67f09SDavid van Moolenbroek 1) t1=`expr ${t1:-0} + 1`;; 37*00b67f09SDavid van Moolenbroek 2) t2=`expr ${t2:-0} + 1`;; 38*00b67f09SDavid van Moolenbroek 3) t3=`expr ${t3:-0} + 1`;; 39*00b67f09SDavid van Moolenbroek *) echo $i `grep real $tout`;; 40*00b67f09SDavid van Moolenbroek esac 41*00b67f09SDavid van Moolenbroek 42*00b67f09SDavid van Moolenbroek grep "status: \(NXDOMAIN\|NOERROR\)" $dout > /dev/null || { 43*00b67f09SDavid van Moolenbroek echo $cmd $i.${sub}$zone 44*00b67f09SDavid van Moolenbroek cat $dout 45*00b67f09SDavid van Moolenbroek } 46*00b67f09SDavid van Moolenbroek i=`expr $i + 1` 47*00b67f09SDavid van Moolenbroek done 48*00b67f09SDavid van Moolenbroek if test ${t1:-0} -ne 0 -o ${t2:-0} -ne 0 -o ${t3:-0} -ne 0 49*00b67f09SDavid van Moolenbroek then 50*00b67f09SDavid van Moolenbroek echo "$x timeouts: t1=${t1:-0} t2=${t2:-0} t3=${t3:-0}" 51*00b67f09SDavid van Moolenbroek fi 52*00b67f09SDavid van Moolenbroek} 53*00b67f09SDavid van Moolenbroek 54*00b67f09SDavid van Moolenbroekwhile read zone rest 55*00b67f09SDavid van Moolenbroekdo 56*00b67f09SDavid van Moolenbroek for sub in "" medium. big. 57*00b67f09SDavid van Moolenbroek do 58*00b67f09SDavid van Moolenbroek case $zone in 59*00b67f09SDavid van Moolenbroek .) echo doing ${sub:-.};; 60*00b67f09SDavid van Moolenbroek *) echo doing $sub$zone;; 61*00b67f09SDavid van Moolenbroek esac 62*00b67f09SDavid van Moolenbroek ( inner $zone 1 100) & 63*00b67f09SDavid van Moolenbroek ( inner $zone 101 200) & 64*00b67f09SDavid van Moolenbroek ( inner $zone 201 300) & 65*00b67f09SDavid van Moolenbroek ( inner $zone 301 400) & 66*00b67f09SDavid van Moolenbroek ( inner $zone 401 500) & 67*00b67f09SDavid van Moolenbroek ( inner $zone 501 600) & 68*00b67f09SDavid van Moolenbroek ( inner $zone 601 700) & 69*00b67f09SDavid van Moolenbroek ( inner $zone 701 800) & 70*00b67f09SDavid van Moolenbroek ( inner $zone 801 900) & 71*00b67f09SDavid van Moolenbroek ( inner $zone 901 1000) & 72*00b67f09SDavid van Moolenbroek ( inner $zone 1001 1100) & 73*00b67f09SDavid van Moolenbroek ( inner $zone 1101 1200) & 74*00b67f09SDavid van Moolenbroek ( inner $zone 1201 1300) & 75*00b67f09SDavid van Moolenbroek ( inner $zone 1301 1400) & 76*00b67f09SDavid van Moolenbroek ( inner $zone 1401 1500) & 77*00b67f09SDavid van Moolenbroek ( inner $zone 1501 1600) & 78*00b67f09SDavid van Moolenbroek ( inner $zone 1601 1700) & 79*00b67f09SDavid van Moolenbroek wait 80*00b67f09SDavid van Moolenbroek done 81*00b67f09SDavid van Moolenbroekdone 82