1
0

update-named 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/bin/bash
  2. logger -t named "Refresh named config request"
  3. /usr/local/scripts/print-dns-zones.pl
  4. [ $? -ne 0 ] && exit 1
  5. RELOAD=
  6. ZONELIST=`ls -x -1 /var/named/chroot/var/named/master/db.*.new`
  7. echo "${ZONELIST}" | while read NS2_DB; do
  8. NS1_DB=`echo "$NS2_DB" | sed 's/.new$//'`
  9. [ ! -e $NS1_DB ] && {
  10. cat $NS2_DB > $NS1_DB
  11. chown named:named ${NS1_DB} >/dev/null
  12. RELOAD=1
  13. continue
  14. }
  15. TMP_R1=`mktemp /tmp/rev_old.XXXXXXXXXX`
  16. TMP_R2=`mktemp /tmp/rev_new.XXXXXXXXXX`
  17. S1=`cat $NS1_DB | grep "; serial" | awk '{ print \$1 }'`
  18. S2=`cat $NS2_DB | grep "; serial" | awk '{ print \$1 }'`
  19. cat $NS1_DB | grep -v "; serial" >$TMP_R2
  20. cat $NS2_DB | grep -v "; serial" >$TMP_R1
  21. diff -aqbBfi $TMP_R2 $TMP_R1 >/dev/null
  22. state=$?
  23. rm -f $TMP_R1 >/dev/null
  24. rm -f $TMP_R2 >/dev/null
  25. [ ${state} -eq 0 ] && continue
  26. echo "dns config $NS1_DB changed."
  27. cat $NS2_DB > $NS1_DB
  28. RELOAD=1
  29. rm -f "${NS2_DB}" >/dev/null
  30. chown named:named ${NS1_DB} >/dev/null
  31. done
  32. diff -aqbBfi /var/named/chroot/etc/named.dynamic.new /var/named/chroot/etc/named.dynamic >/dev/null
  33. [ $? -ne 0 ] && {
  34. RELOAD=1
  35. cat /var/named/chroot/etc/named.dynamic.new >/var/named/chroot/etc/named.dynamic
  36. }
  37. if [ -n "${RELOAD}" ]; then
  38. logger -t named "Configuration changed. Check config"
  39. /usr/sbin/named-checkconf -t /var/named/chroot/ -z >/dev/null
  40. if [ $? -eq 0 ]; then
  41. logger -t named "Config fine! Restart named"
  42. /sbin/service named restart >/dev/null
  43. fi
  44. else
  45. logger -t named "Config not changed! Skip restart"
  46. fi
  47. rm -f /var/named/chroot/etc/named.dynamic.new 2>/dev/null
  48. rm -f /var/named/chroot/var/named/master/db.*.new 2>/dev/null
  49. logger -t named "done"
  50. exit