| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #!/bin/bash
- logger -t dhcpd "Refresh dnsmasq config request"
- force=$1
- /opt/Eye/scripts/print-dnsmasq.pl >/tmp/mac-all
- ret=$?
- if [ ${ret} -ne 0 ]; then
- [ -e "/tmp/mac-all" ] && rm -f /tmp/mac-all
- logger -t dhcpd "Config generate error! Bye."
- exit
- fi
- [ ! -e "/etc/dnsmasq.d/" ] && mkdir -p "/etc/dnsmasq.d/"
- touch /etc/dnsmasq.d/mac-all
- CHANGES=$(diff -ubBi /tmp/mac-all /etc/dnsmasq.d/mac-all | egrep "^[+-]dhcp" | awk '{ print $1 }' | sed -E 's/(\+|\-)//;s/dhcp-host=//;s/\,//' | sort -u)
- if [ -n "${CHANGES}" -o -n "${force}" ]; then
- logger -t dhcpd "Update dnsmasq config"
- cat /etc/dnsmasq.d/mac-all >/tmp/mac.old
- cat /tmp/mac-all >/etc/dnsmasq.d/mac-all
- /usr/sbin/dnsmasq --test >/dev/null 2>&1
- ret=$?
- if [ ${ret} -eq 0 ]; then
- #clear leases
- systemctl stop dnsmasq >/dev/null
- echo "${CHANGES}" | while read LEASE; do
- logger -t dhcpd "Clear ${LEASE}"
- if [ -n "${LEASE}" ]; then
- sed -i "/${LEASE}/d" /var/lib/misc/dnsmasq.leases
- fi
- done
- systemctl start dnsmasq >/dev/null
- else
- logger -t dhcpd "Config error! Rollback changes."
- cat /tmp/mac.old >/etc/dnsmasq.d/mac-all
- fi
- else
- logger -t dhcpd "Config not changed. Skip restart"
- fi
- logger -t dhcpd "done"
- [ -e "/tmp/mac-all" ] && rm -f /tmp/mac-all
- [ -e "/tmp/mac.old" ] && rm -f /tmp/mac.old
- exit
|