| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #!/bin/bash
- logger -t named "Refresh named config request"
- /usr/local/scripts/print-dns-zones.pl
- [ $? -ne 0 ] && exit 1
- RELOAD=
- ZONELIST=`ls -x -1 /var/named/chroot/var/named/master/db.*.new`
- echo "${ZONELIST}" | while read NS2_DB; do
- NS1_DB=`echo "$NS2_DB" | sed 's/.new$//'`
- [ ! -e $NS1_DB ] && {
- cat $NS2_DB > $NS1_DB
- chown named:named ${NS1_DB} >/dev/null
- RELOAD=1
- continue
- }
- TMP_R1=`mktemp /tmp/rev_old.XXXXXXXXXX`
- TMP_R2=`mktemp /tmp/rev_new.XXXXXXXXXX`
- S1=`cat $NS1_DB | grep "; serial" | awk '{ print \$1 }'`
- S2=`cat $NS2_DB | grep "; serial" | awk '{ print \$1 }'`
- cat $NS1_DB | grep -v "; serial" >$TMP_R2
- cat $NS2_DB | grep -v "; serial" >$TMP_R1
- diff -aqbBfi $TMP_R2 $TMP_R1 >/dev/null
- state=$?
- rm -f $TMP_R1 >/dev/null
- rm -f $TMP_R2 >/dev/null
- [ ${state} -eq 0 ] && continue
- echo "dns config $NS1_DB changed."
- cat $NS2_DB > $NS1_DB
- RELOAD=1
- rm -f "${NS2_DB}" >/dev/null
- chown named:named ${NS1_DB} >/dev/null
- done
- diff -aqbBfi /var/named/chroot/etc/named.dynamic.new /var/named/chroot/etc/named.dynamic >/dev/null
- [ $? -ne 0 ] && {
- RELOAD=1
- cat /var/named/chroot/etc/named.dynamic.new >/var/named/chroot/etc/named.dynamic
- }
- if [ -n "${RELOAD}" ]; then
- logger -t named "Configuration changed. Check config"
- /usr/sbin/named-checkconf -t /var/named/chroot/ -z >/dev/null
- if [ $? -eq 0 ]; then
- logger -t named "Config fine! Restart named"
- /sbin/service named restart >/dev/null
- fi
- else
- logger -t named "Config not changed! Skip restart"
- fi
- rm -f /var/named/chroot/etc/named.dynamic.new 2>/dev/null
- rm -f /var/named/chroot/var/named/master/db.*.new 2>/dev/null
- logger -t named "done"
- exit
|