1*00b67f09SDavid van Moolenbroek#!/bin/sh 2*00b67f09SDavid van Moolenbroek# 3*00b67f09SDavid van Moolenbroek# Copyright (C) 2004, 2005, 2007, 2011-2014 Internet Systems Consortium, Inc. ("ISC") 4*00b67f09SDavid van Moolenbroek# Copyright (C) 2000, 2001 Internet Software Consortium. 5*00b67f09SDavid van Moolenbroek# 6*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any 7*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above 8*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies. 9*00b67f09SDavid van Moolenbroek# 10*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 11*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 12*00b67f09SDavid van Moolenbroek# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 13*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 14*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 15*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE. 17*00b67f09SDavid van Moolenbroek 18*00b67f09SDavid van Moolenbroek# Id: tests.sh,v 1.37 2012/02/22 23:47:35 tbox Exp 19*00b67f09SDavid van Moolenbroek 20*00b67f09SDavid van MoolenbroekSYSTEMTESTTOP=.. 21*00b67f09SDavid van Moolenbroek. $SYSTEMTESTTOP/conf.sh 22*00b67f09SDavid van Moolenbroek 23*00b67f09SDavid van MoolenbroekDIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd" 24*00b67f09SDavid van Moolenbroek 25*00b67f09SDavid van Moolenbroekstatus=0 26*00b67f09SDavid van Moolenbroek 27*00b67f09SDavid van Moolenbroekecho "I:testing basic zone transfer functionality" 28*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS example. \ 29*00b67f09SDavid van Moolenbroek @10.53.0.2 axfr -p 5300 > dig.out.ns2 || status=1 30*00b67f09SDavid van Moolenbroekgrep "^;" dig.out.ns2 31*00b67f09SDavid van Moolenbroek 32*00b67f09SDavid van Moolenbroek# 33*00b67f09SDavid van Moolenbroek# Spin to allow the zone to tranfer. 34*00b67f09SDavid van Moolenbroek# 35*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 36*00b67f09SDavid van Moolenbroekdo 37*00b67f09SDavid van Moolenbroektmp=0 38*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS example. \ 39*00b67f09SDavid van Moolenbroek @10.53.0.3 axfr -p 5300 > dig.out.ns3 || tmp=1 40*00b67f09SDavid van Moolenbroek grep "^;" dig.out.ns3 > /dev/null 41*00b67f09SDavid van Moolenbroek if test $? -ne 0 ; then break; fi 42*00b67f09SDavid van Moolenbroek echo "I: plain zone re-transfer" 43*00b67f09SDavid van Moolenbroek sleep 5 44*00b67f09SDavid van Moolenbroekdone 45*00b67f09SDavid van Moolenbroekif test $tmp -eq 1 ; then status=1; fi 46*00b67f09SDavid van Moolenbroekgrep "^;" dig.out.ns3 47*00b67f09SDavid van Moolenbroek 48*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl dig1.good dig.out.ns2 || status=1 49*00b67f09SDavid van Moolenbroek 50*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl dig1.good dig.out.ns3 || status=1 51*00b67f09SDavid van Moolenbroek 52*00b67f09SDavid van Moolenbroekecho "I:testing TSIG signed zone transfers" 53*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS tsigzone. \ 54*00b67f09SDavid van Moolenbroek @10.53.0.2 axfr -y tsigzone.:1234abcd8765 -p 5300 \ 55*00b67f09SDavid van Moolenbroek > dig.out.ns2 || status=1 56*00b67f09SDavid van Moolenbroekgrep "^;" dig.out.ns2 57*00b67f09SDavid van Moolenbroek 58*00b67f09SDavid van Moolenbroek# 59*00b67f09SDavid van Moolenbroek# Spin to allow the zone to tranfer. 60*00b67f09SDavid van Moolenbroek# 61*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 62*00b67f09SDavid van Moolenbroekdo 63*00b67f09SDavid van Moolenbroektmp=0 64*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS tsigzone. \ 65*00b67f09SDavid van Moolenbroek @10.53.0.3 axfr -y tsigzone.:1234abcd8765 -p 5300 \ 66*00b67f09SDavid van Moolenbroek > dig.out.ns3 || tmp=1 67*00b67f09SDavid van Moolenbroek grep "^;" dig.out.ns3 > /dev/null 68*00b67f09SDavid van Moolenbroek if test $? -ne 0 ; then break; fi 69*00b67f09SDavid van Moolenbroek echo "I: plain zone re-transfer" 70*00b67f09SDavid van Moolenbroek sleep 5 71*00b67f09SDavid van Moolenbroekdone 72*00b67f09SDavid van Moolenbroekif test $tmp -eq 1 ; then status=1; fi 73*00b67f09SDavid van Moolenbroekgrep "^;" dig.out.ns3 74*00b67f09SDavid van Moolenbroek 75*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl dig.out.ns2 dig.out.ns3 || status=1 76*00b67f09SDavid van Moolenbroek 77*00b67f09SDavid van Moolenbroekecho "I:reload servers for in preparation for ixfr-from-differences tests" 78*00b67f09SDavid van Moolenbroek 79*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.1 -p 9953 reload 2>&1 | sed 's/^/I:ns1 /' 80*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /' 81*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 reload 2>&1 | sed 's/^/I:ns3 /' 82*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.6 -p 9953 reload 2>&1 | sed 's/^/I:ns6 /' 83*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.7 -p 9953 reload 2>&1 | sed 's/^/I:ns7 /' 84*00b67f09SDavid van Moolenbroek 85*00b67f09SDavid van Moolenbroeksleep 2 86*00b67f09SDavid van Moolenbroek 87*00b67f09SDavid van Moolenbroekecho "I:updating master zones for ixfr-from-differences tests" 88*00b67f09SDavid van Moolenbroek 89*00b67f09SDavid van Moolenbroek$PERL -i -p -e ' 90*00b67f09SDavid van Moolenbroek s/0\.0\.0\.0/0.0.0.1/; 91*00b67f09SDavid van Moolenbroek s/1397051952/1397051953/ 92*00b67f09SDavid van Moolenbroek' ns1/slave.db 93*00b67f09SDavid van Moolenbroek 94*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.1 -p 9953 reload 2>&1 | sed 's/^/I:ns1 /' 95*00b67f09SDavid van Moolenbroek 96*00b67f09SDavid van Moolenbroek$PERL -i -p -e ' 97*00b67f09SDavid van Moolenbroek s/0\.0\.0\.0/0.0.0.1/; 98*00b67f09SDavid van Moolenbroek s/1397051952/1397051953/ 99*00b67f09SDavid van Moolenbroek' ns2/example.db 100*00b67f09SDavid van Moolenbroek 101*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /' 102*00b67f09SDavid van Moolenbroek 103*00b67f09SDavid van Moolenbroek$PERL -i -p -e ' 104*00b67f09SDavid van Moolenbroek s/0\.0\.0\.0/0.0.0.1/; 105*00b67f09SDavid van Moolenbroek s/1397051952/1397051953/ 106*00b67f09SDavid van Moolenbroek' ns6/master.db 107*00b67f09SDavid van Moolenbroek 108*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.6 -p 9953 reload 2>&1 | sed 's/^/I:ns6 /' 109*00b67f09SDavid van Moolenbroek 110*00b67f09SDavid van Moolenbroek$PERL -i -p -e ' 111*00b67f09SDavid van Moolenbroek s/0\.0\.0\.0/0.0.0.1/; 112*00b67f09SDavid van Moolenbroek s/1397051952/1397051953/ 113*00b67f09SDavid van Moolenbroek' ns7/master2.db 114*00b67f09SDavid van Moolenbroek 115*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.7 -p 9953 reload 2>&1 | sed 's/^/I:ns7 /' 116*00b67f09SDavid van Moolenbroek 117*00b67f09SDavid van Moolenbroeksleep 3 118*00b67f09SDavid van Moolenbroek 119*00b67f09SDavid van Moolenbroekecho "I:testing zone is dumped after successful transfer" 120*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS +noall +answer +multi @10.53.0.2 -p 5300 \ 121*00b67f09SDavid van Moolenbroek slave. soa > dig.out.ns2 || tmp=1 122*00b67f09SDavid van Moolenbroekgrep "1397051952 ; serial" dig.out.ns2 > /dev/null 2>&1 || tmp=1 123*00b67f09SDavid van Moolenbroekgrep "1397051952 ; serial" ns2/slave.db > /dev/null 2>&1 || tmp=1 124*00b67f09SDavid van Moolenbroekif test $tmp != 0 ; then echo "I:failed"; fi 125*00b67f09SDavid van Moolenbroekstatus=`expr $status + $tmp` 126*00b67f09SDavid van Moolenbroek 127*00b67f09SDavid van Moolenbroekecho "I:testing ixfr-from-differences yes;" 128*00b67f09SDavid van Moolenbroektmp=0 129*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9 130*00b67f09SDavid van Moolenbroekdo 131*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 +noall +answer soa example > dig.out.soa.ns3 132*00b67f09SDavid van Moolenbroek grep "1397051953" dig.out.soa.ns3 > /dev/null && break; 133*00b67f09SDavid van Moolenbroek sleep 1 134*00b67f09SDavid van Moolenbroekdone 135*00b67f09SDavid van Moolenbroek 136*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS example. \ 137*00b67f09SDavid van Moolenbroek @10.53.0.3 axfr -p 5300 > dig.out.ns3 || tmp=1 138*00b67f09SDavid van Moolenbroekgrep "^;" dig.out.ns3 139*00b67f09SDavid van Moolenbroek 140*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl dig2.good dig.out.ns3 || tmp=1 141*00b67f09SDavid van Moolenbroek 142*00b67f09SDavid van Moolenbroek# ns3 has a journal iff it received an IXFR. 143*00b67f09SDavid van Moolenbroektest -f ns3/example.bk || tmp=1 144*00b67f09SDavid van Moolenbroektest -f ns3/example.bk.jnl || tmp=1 145*00b67f09SDavid van Moolenbroek 146*00b67f09SDavid van Moolenbroekif test $tmp != 0 ; then echo "I:failed"; fi 147*00b67f09SDavid van Moolenbroekstatus=`expr $status + $tmp` 148*00b67f09SDavid van Moolenbroek 149*00b67f09SDavid van Moolenbroekecho "I:testing ixfr-from-differences master; (master zone)" 150*00b67f09SDavid van Moolenbroektmp=0 151*00b67f09SDavid van Moolenbroek 152*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS master. \ 153*00b67f09SDavid van Moolenbroek @10.53.0.6 axfr -p 5300 > dig.out.ns6 || tmp=1 154*00b67f09SDavid van Moolenbroekgrep "^;" dig.out.ns6 155*00b67f09SDavid van Moolenbroek 156*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS master. \ 157*00b67f09SDavid van Moolenbroek @10.53.0.3 axfr -p 5300 > dig.out.ns3 || tmp=1 158*00b67f09SDavid van Moolenbroekgrep "^;" dig.out.ns3 && cat dig.out.ns3 159*00b67f09SDavid van Moolenbroek 160*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl dig.out.ns6 dig.out.ns3 || tmp=1 161*00b67f09SDavid van Moolenbroek 162*00b67f09SDavid van Moolenbroek# ns3 has a journal iff it received an IXFR. 163*00b67f09SDavid van Moolenbroektest -f ns3/master.bk || tmp=1 164*00b67f09SDavid van Moolenbroektest -f ns3/master.bk.jnl || tmp=1 165*00b67f09SDavid van Moolenbroek 166*00b67f09SDavid van Moolenbroekif test $tmp != 0 ; then echo "I:failed"; fi 167*00b67f09SDavid van Moolenbroekstatus=`expr $status + $tmp` 168*00b67f09SDavid van Moolenbroek 169*00b67f09SDavid van Moolenbroekecho "I:testing ixfr-from-differences master; (slave zone)" 170*00b67f09SDavid van Moolenbroektmp=0 171*00b67f09SDavid van Moolenbroek 172*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS slave. \ 173*00b67f09SDavid van Moolenbroek @10.53.0.6 axfr -p 5300 > dig.out.ns6 || tmp=1 174*00b67f09SDavid van Moolenbroekgrep "^;" dig.out.ns6 175*00b67f09SDavid van Moolenbroek 176*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS slave. \ 177*00b67f09SDavid van Moolenbroek @10.53.0.1 axfr -p 5300 > dig.out.ns1 || tmp=1 178*00b67f09SDavid van Moolenbroekgrep "^;" dig.out.ns1 179*00b67f09SDavid van Moolenbroek 180*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl dig.out.ns6 dig.out.ns1 || tmp=1 181*00b67f09SDavid van Moolenbroek 182*00b67f09SDavid van Moolenbroek# ns6 has a journal iff it received an IXFR. 183*00b67f09SDavid van Moolenbroektest -f ns6/slave.bk || tmp=1 184*00b67f09SDavid van Moolenbroektest -f ns6/slave.bk.jnl && tmp=1 185*00b67f09SDavid van Moolenbroek 186*00b67f09SDavid van Moolenbroekif test $tmp != 0 ; then echo "I:failed"; fi 187*00b67f09SDavid van Moolenbroekstatus=`expr $status + $tmp` 188*00b67f09SDavid van Moolenbroek 189*00b67f09SDavid van Moolenbroekecho "I:testing ixfr-from-differences slave; (master zone)" 190*00b67f09SDavid van Moolenbroektmp=0 191*00b67f09SDavid van Moolenbroek 192*00b67f09SDavid van Moolenbroek# ns7 has a journal iff it generates an IXFR. 193*00b67f09SDavid van Moolenbroektest -f ns7/master2.db || tmp=1 194*00b67f09SDavid van Moolenbroektest -f ns7/master2.db.jnl && tmp=1 195*00b67f09SDavid van Moolenbroek 196*00b67f09SDavid van Moolenbroekif test $tmp != 0 ; then echo "I:failed"; fi 197*00b67f09SDavid van Moolenbroekstatus=`expr $status + $tmp` 198*00b67f09SDavid van Moolenbroekecho "I:testing ixfr-from-differences slave; (slave zone)" 199*00b67f09SDavid van Moolenbroektmp=0 200*00b67f09SDavid van Moolenbroek 201*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS slave. \ 202*00b67f09SDavid van Moolenbroek @10.53.0.1 axfr -p 5300 > dig.out.ns1 || tmp=1 203*00b67f09SDavid van Moolenbroekgrep "^;" dig.out.ns1 204*00b67f09SDavid van Moolenbroek 205*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS slave. \ 206*00b67f09SDavid van Moolenbroek @10.53.0.7 axfr -p 5300 > dig.out.ns7 || tmp=1 207*00b67f09SDavid van Moolenbroekgrep "^;" dig.out.ns1 208*00b67f09SDavid van Moolenbroek 209*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl dig.out.ns7 dig.out.ns1 || tmp=1 210*00b67f09SDavid van Moolenbroek 211*00b67f09SDavid van Moolenbroek# ns7 has a journal iff it generates an IXFR. 212*00b67f09SDavid van Moolenbroektest -f ns7/slave.bk || tmp=1 213*00b67f09SDavid van Moolenbroektest -f ns7/slave.bk.jnl || tmp=1 214*00b67f09SDavid van Moolenbroek 215*00b67f09SDavid van Moolenbroekif test $tmp != 0 ; then echo "I:failed"; fi 216*00b67f09SDavid van Moolenbroekstatus=`expr $status + $tmp` 217*00b67f09SDavid van Moolenbroek 218*00b67f09SDavid van Moolenbroekecho "I:check that a multi-message uncompressable zone transfers" 219*00b67f09SDavid van Moolenbroek$DIG axfr . -p 5300 @10.53.0.4 | grep SOA > axfr.out 220*00b67f09SDavid van Moolenbroekif test `wc -l < axfr.out` != 2 221*00b67f09SDavid van Moolenbroekthen 222*00b67f09SDavid van Moolenbroek echo "I:failed" 223*00b67f09SDavid van Moolenbroek status=`expr $status + 1` 224*00b67f09SDavid van Moolenbroekfi 225*00b67f09SDavid van Moolenbroek 226*00b67f09SDavid van Moolenbroek# now we test transfers with assorted TSIG glitches 227*00b67f09SDavid van MoolenbroekDIGCMD="$DIG $DIGOPTS @10.53.0.4 -p 5300" 228*00b67f09SDavid van MoolenbroekSENDCMD="$PERL ../send.pl 10.53.0.5 5301" 229*00b67f09SDavid van MoolenbroekRNDCCMD="$RNDC -s 10.53.0.4 -p 9953 -c ../common/rndc.conf" 230*00b67f09SDavid van Moolenbroek 231*00b67f09SDavid van Moolenbroekecho "I:testing that incorrectly signed transfers will fail..." 232*00b67f09SDavid van Moolenbroekecho "I:initial correctly-signed transfer should succeed" 233*00b67f09SDavid van Moolenbroek 234*00b67f09SDavid van Moolenbroek$SENDCMD < ans5/goodaxfr 235*00b67f09SDavid van Moolenbroeksleep 1 236*00b67f09SDavid van Moolenbroek 237*00b67f09SDavid van Moolenbroek# Initially, ns4 is not authoritative for anything. 238*00b67f09SDavid van Moolenbroek# Now that ans is up and running with the right data, we make it 239*00b67f09SDavid van Moolenbroek# a slave for nil. 240*00b67f09SDavid van Moolenbroek 241*00b67f09SDavid van Moolenbroekcat <<EOF >>ns4/named.conf 242*00b67f09SDavid van Moolenbroekzone "nil" { 243*00b67f09SDavid van Moolenbroek type slave; 244*00b67f09SDavid van Moolenbroek file "nil.db"; 245*00b67f09SDavid van Moolenbroek masters { 10.53.0.5 key tsig_key; }; 246*00b67f09SDavid van Moolenbroek}; 247*00b67f09SDavid van MoolenbroekEOF 248*00b67f09SDavid van Moolenbroek 249*00b67f09SDavid van Moolenbroek$RNDCCMD reload | sed 's/^/I:ns4 /' 250*00b67f09SDavid van Moolenbroek 251*00b67f09SDavid van Moolenbroek 252*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9 253*00b67f09SDavid van Moolenbroekdo 254*00b67f09SDavid van Moolenbroek $DIGCMD nil. SOA > dig.out.ns4 255*00b67f09SDavid van Moolenbroek grep SOA dig.out.ns4 > /dev/null && break 256*00b67f09SDavid van Moolenbroek sleep 1 257*00b67f09SDavid van Moolenbroekdone 258*00b67f09SDavid van Moolenbroek 259*00b67f09SDavid van Moolenbroek$DIGCMD nil. TXT | grep 'initial AXFR' >/dev/null || { 260*00b67f09SDavid van Moolenbroek echo "I:failed" 261*00b67f09SDavid van Moolenbroek status=1 262*00b67f09SDavid van Moolenbroek} 263*00b67f09SDavid van Moolenbroek 264*00b67f09SDavid van Moolenbroekecho "I:unsigned transfer" 265*00b67f09SDavid van Moolenbroek 266*00b67f09SDavid van Moolenbroek$SENDCMD < ans5/unsigned 267*00b67f09SDavid van Moolenbroeksleep 1 268*00b67f09SDavid van Moolenbroek 269*00b67f09SDavid van Moolenbroek$RNDCCMD retransfer nil | sed 's/^/I:ns4 /' 270*00b67f09SDavid van Moolenbroek 271*00b67f09SDavid van Moolenbroeksleep 2 272*00b67f09SDavid van Moolenbroek 273*00b67f09SDavid van Moolenbroek$DIGCMD nil. TXT | grep 'unsigned AXFR' >/dev/null && { 274*00b67f09SDavid van Moolenbroek echo "I:failed" 275*00b67f09SDavid van Moolenbroek status=1 276*00b67f09SDavid van Moolenbroek} 277*00b67f09SDavid van Moolenbroek 278*00b67f09SDavid van Moolenbroekecho "I:bad keydata" 279*00b67f09SDavid van Moolenbroek 280*00b67f09SDavid van Moolenbroek$SENDCMD < ans5/badkeydata 281*00b67f09SDavid van Moolenbroeksleep 1 282*00b67f09SDavid van Moolenbroek 283*00b67f09SDavid van Moolenbroek$RNDCCMD retransfer nil | sed 's/^/I:ns4 /' 284*00b67f09SDavid van Moolenbroek 285*00b67f09SDavid van Moolenbroeksleep 2 286*00b67f09SDavid van Moolenbroek 287*00b67f09SDavid van Moolenbroek$DIGCMD nil. TXT | grep 'bad keydata AXFR' >/dev/null && { 288*00b67f09SDavid van Moolenbroek echo "I:failed" 289*00b67f09SDavid van Moolenbroek status=1 290*00b67f09SDavid van Moolenbroek} 291*00b67f09SDavid van Moolenbroek 292*00b67f09SDavid van Moolenbroekecho "I:partially-signed transfer" 293*00b67f09SDavid van Moolenbroek 294*00b67f09SDavid van Moolenbroek$SENDCMD < ans5/partial 295*00b67f09SDavid van Moolenbroeksleep 1 296*00b67f09SDavid van Moolenbroek 297*00b67f09SDavid van Moolenbroek$RNDCCMD retransfer nil | sed 's/^/I:ns4 /' 298*00b67f09SDavid van Moolenbroek 299*00b67f09SDavid van Moolenbroeksleep 2 300*00b67f09SDavid van Moolenbroek 301*00b67f09SDavid van Moolenbroek$DIGCMD nil. TXT | grep 'partially signed AXFR' >/dev/null && { 302*00b67f09SDavid van Moolenbroek echo "I:failed" 303*00b67f09SDavid van Moolenbroek status=1 304*00b67f09SDavid van Moolenbroek} 305*00b67f09SDavid van Moolenbroek 306*00b67f09SDavid van Moolenbroekecho "I:unknown key" 307*00b67f09SDavid van Moolenbroek 308*00b67f09SDavid van Moolenbroek$SENDCMD < ans5/unknownkey 309*00b67f09SDavid van Moolenbroeksleep 1 310*00b67f09SDavid van Moolenbroek 311*00b67f09SDavid van Moolenbroek$RNDCCMD retransfer nil | sed 's/^/I:ns4 /' 312*00b67f09SDavid van Moolenbroek 313*00b67f09SDavid van Moolenbroeksleep 2 314*00b67f09SDavid van Moolenbroek 315*00b67f09SDavid van Moolenbroek$DIGCMD nil. TXT | grep 'unknown key AXFR' >/dev/null && { 316*00b67f09SDavid van Moolenbroek echo "I:failed" 317*00b67f09SDavid van Moolenbroek status=1 318*00b67f09SDavid van Moolenbroek} 319*00b67f09SDavid van Moolenbroek 320*00b67f09SDavid van Moolenbroekecho "I:incorrect key" 321*00b67f09SDavid van Moolenbroek 322*00b67f09SDavid van Moolenbroek$SENDCMD < ans5/wrongkey 323*00b67f09SDavid van Moolenbroeksleep 1 324*00b67f09SDavid van Moolenbroek 325*00b67f09SDavid van Moolenbroek$RNDCCMD retransfer nil | sed 's/^/I:ns4 /' 326*00b67f09SDavid van Moolenbroek 327*00b67f09SDavid van Moolenbroeksleep 2 328*00b67f09SDavid van Moolenbroek 329*00b67f09SDavid van Moolenbroek$DIGCMD nil. TXT | grep 'incorrect key AXFR' >/dev/null && { 330*00b67f09SDavid van Moolenbroek echo "I:failed" 331*00b67f09SDavid van Moolenbroek status=1 332*00b67f09SDavid van Moolenbroek} 333*00b67f09SDavid van Moolenbroek 334*00b67f09SDavid van Moolenbroekecho "I:exit status: $status" 335*00b67f09SDavid van Moolenbroekexit $status 336