update-named 1.6 KB

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