Fix dnsmasq replacement issue

This commit is contained in:
Nick Peng
2019-01-25 21:04:01 +08:00
parent 71e110748b
commit 6e5fc54439

View File

@@ -52,7 +52,7 @@ clear_iptable()
restart_dnsmasq() restart_dnsmasq()
{ {
CMD="`ps | grep dnsmasq | grep -v grep`" CMD="`ps | grep " dnsmasq" | grep -v grep`"
if [ -z "$CMD" ]; then if [ -z "$CMD" ]; then
CMD="`ps ax | grep dnsmasq | grep -v grep`" CMD="`ps ax | grep dnsmasq | grep -v grep`"
fi fi
@@ -81,17 +81,18 @@ get_server_ip()
LOCAL_SERVER_IP="" LOCAL_SERVER_IP=""
for IP in $IPS for IP in $IPS
do do
N=3 N=3
while [ $N -gt 0 ] while [ $N -gt 0 ]
do do
ADDR=`echo $IP | awk -F. "{for(i=1;i<=$N;i++)printf \\$i\".\"}"` ADDR=`echo $IP | awk -F. "{for(i=1;i<=$N;i++)printf \\$i\".\"}"`
grep "dhcp-range=" $DNSMASQ_CONF | grep lan | grep $ADDR >/dev/null 2>&1 grep "dhcp-range=" $DNSMASQ_CONF | grep $ADDR >/dev/null 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
LOCAL_SERVER_IP="$IP" SERVER_TAG="`grep "^dhcp-range *=" $DNSMASQ_CONF | grep $ADDR | awk -F= '{print $2}' | awk -F, '{print $1}'`"
return 0 LOCAL_SERVER_IP="$IP"
fi return 0
N="`expr $N - 1`" fi
done N="`expr $N - 1`"
done
done done
return 1 return 1
@@ -101,12 +102,13 @@ set_dnsmasq()
{ {
local RESTART_DNSMASQ=0 local RESTART_DNSMASQ=0
local LOCAL_SERVER_IP="" local LOCAL_SERVER_IP=""
local SERVER_TAG=""
get_server_ip get_server_ip
if [ "$LOCAL_SERVER_IP" ]; then if [ "$LOCAL_SERVER_IP" ] && [ "$SERVER_TAG" ]; then
grep "dhcp-option *=" $DNSMASQ_CONF | grep "lan,6,$LOCAL_SERVER_IP" > /dev/null 2>&1 grep "dhcp-option *=" $DNSMASQ_CONF | grep "$SERVER_TAG,6,$LOCAL_SERVER_IP" > /dev/null 2>&1
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
sed -i "/^dhcp-option *=lan,6,/d" $DNSMASQ_CONF sed -i "/^dhcp-option *=$SERVER_TAG,6,/d" $DNSMASQ_CONF
echo "dhcp-option=lan,6,$LOCAL_SERVER_IP" >> $DNSMASQ_CONF echo "dhcp-option=$SERVER_TAG,6,$LOCAL_SERVER_IP" >> $DNSMASQ_CONF
RESTART_DNSMASQ=1 RESTART_DNSMASQ=1
fi fi
fi fi
@@ -128,11 +130,12 @@ clear_dnsmasq()
{ {
local RESTART_DNSMASQ=0 local RESTART_DNSMASQ=0
local LOCAL_SERVER_IP="" local LOCAL_SERVER_IP=""
local SERVER_TAG=""
get_server_ip get_server_ip
if [ "$LOCAL_SERVER_IP" ]; then if [ "$LOCAL_SERVER_IP" ] && [ "$SERVER_TAG" ]; then
grep "dhcp-option *=" $DNSMASQ_CONF | grep "lan,6,$LOCAL_SERVER_IP" > /dev/null 2>&1 grep "dhcp-option *=" $DNSMASQ_CONF | grep "$SERVER_TAG,6,$LOCAL_SERVER_IP" > /dev/null 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
sed -i "/^dhcp-option *=lan,6,/d" $DNSMASQ_CONF sed -i "/^dhcp-option *=$SERVER_TAG,6,/d" $DNSMASQ_CONF
RESTART_DNSMASQ=1 RESTART_DNSMASQ=1
fi fi
fi fi
@@ -253,3 +256,4 @@ case "$1" in
*) *)
;; ;;
esac esac