Cover V03, I01
Article
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Listing 1
Listing 2
Listing 3
Sidebar 1

jan94.tar


Listing 2: nsupdate shell

#!/bin/sh
#
#
# this script builds the file master.out (the SOA for sinag.com)
# (actully the only real change that ever takes place is the
#  updated serial number -- it's based on the date)
#
#                                            mrg 7/15/91
#
config=./ns.config

seqfile=`cat $config | grep "^seq" | cut -d= -f2`
output=`cat $config | grep "^output" | cut -d= -f2`

origin=`cat $config | grep "^origin" | cut -d= -f2`
authns=`cat $config | grep "^authns" | cut -d= -f2`
authaddr=`cat $config | grep "^authaddr" | cut -d= -f2`
contact=`cat $config | grep "^contact" | cut -d= -f2`
refresh=`cat $config | grep "^refresh" | cut -d= -f2`
retry=`cat $config | grep "^retry" | cut -d= -f2`
expire=`cat $config | grep "^expire" | cut -d= -f2`
minimum=`cat $config | grep "^minimum" | cut -d= -f2`
include=`cat $config | grep "^include" | cut -d= -f2`

if [ -f ! $seqfile ]
then echo 'Error !!!! the nameseq file is missing....'
exit
fi

set `date`;

m=$2
y=$6
d=$3

# Make the month a numeric number

case $m in
Jan*)     m=01 ;;
Feb*)     m=02 ;;
Mar*)     m=03 ;;
Apr*)     m=04 ;;
May*)     m=05 ;;
Jun*)     m=06 ;;
Jul*)     m=07 ;;
Aug*)     m=08 ;;
Sep*)     m=09 ;;
Oct*)     m=10 ;;
Nov*)     m=11 ;;
Dec*)     m=12 ;;
*)        m=-1 ;;
esac

# Convert the single digit days into 2 digit numbers (ie, add a leading zero)

case $d in

1)        d=01;;
2)        d=02;;
3)        d=03;;
4)        d=04;;
5)        d=05;;
6)        d=06;;
7)        d=07;;
8)        d=08;;
9)        d=09;;
esac

# subtract 1900 from the year....

y=`expr $y - 1900`

cur_date=$y$m$d

#  there is a file called 'nameseq' which should be in the current
# directory.  It's a one line file that contains the last date (yymmdd)
# and the last sequence for that date (0-99).  We now need to read that
# file.  If the last date is different from today's, the sequence is set
# to zero, and the new date is used.  If the date is the same (ie, running
# it more than once on the same day) we just increase the sequence number
#
# At the end, I re-write the 'nameseq' file back out.

set `cat $seqfile`; dateseq=$1; seq=$2

if  [ $cur_date -le $dateseq ]
then seq=`expr $seq + 1`
else
dateseq=$cur_date
seq=0
fi

case $seq in

0)  seq=00;;
1)  seq=01;;
2)  seq=02;;
3)  seq=03;;
4)  seq=04;;
5)  seq=05;;
6)  seq=06;;
7)  seq=07;;
8)  seq=08;;
9)  seq=09;;
esac

# rewrite the 'nameseq' file back out

echo $dateseq  $seq > $seqfile

echo the date_seq is $dateseq and the seq is $seq

# All of these variables are going to be inserted into the named.boot
# file on the primary nameserver.

echo ';'                                                        >  $output
echo '; this file was created on' `date`                        >> $output
echo ';'                                                        >> $output
echo ';  Authoritative data for the ' $origin ' domain '        >> $output
echo ';'                                                        >> $output
echo '; For more information, contact:'                         >> $output
echo ';        sysadmin:  ganis@draco'                          >> $output
echo ';'                                                        >> $output
echo '$origin' $origin                                          >> $output
echo $origin '  IN  SOA ' $authns $contact ' ( '                >> $output
echo '                 ' $dateseq$seq '   ; serial '            >> $output
echo '                 ' $refresh '       ; refresh time '      >> $output
echo '                 ' $retry '       ; retry on failure '    >> $output
echo '                 ' $expire '        ; expire data '       >> $output
echo '                 ' $minimum ')      ; minimum '           >> $output
echo $origin '      IN    NS ' $authns                          >> $output
echo $authns '      IN    A ' $authaddr                         >> $output
echo '$''include ' $include                                     >> $output

echo
echo 'the new master files are in place.'
echo
echo 'should the named deamon be refreshed (y|n) ?'
read answer

if [ $answer = 'y' ]
then  kill -HUP `cat /etc/named.pid`
fi