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
|