Revised service reload functionality

This approach ensures the services are only reloaded once and not multiple times as happened before
This commit is contained in:
bergware
2023-06-18 01:55:51 +02:00
parent 0e14320c96
commit 384fa10575
2 changed files with 6 additions and 21 deletions

View File

@@ -1,10 +1,11 @@
#!/bin/bash
SERVICES="sshd avahidaemon samba rpc nfsd ntpd nginx"
[[ -n $1 && -e /tmp/atjob.tmp ]] && exit 0
for cmd in $SERVICES; do
[[ $cmd == $1 ]] && option=renew || option=reload
if /etc/rc.d/rc.$cmd update; then
/etc/rc.d/rc.$cmd $option >/dev/null 2>&1
/etc/rc.d/rc.$cmd reload >/dev/null 2>&1
fi
done
touch /tmp/atjob.tmp
exit 0

View File

@@ -44,13 +44,6 @@ fi
echo -n >$ini
# clear update information
data=
dhcp=
# get interface name
if [[ -n $1 ]]; then
tag=$1
else
tag=$interface
fi
# loop thru all defined interfaces (=1 in case of legacy)
for ((i=0;i<${SYSNICS:-1};i++)); do
@@ -123,7 +116,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
echo "DESCRIPTION:0=\"${DESCRIPTION[$i]}\"" >>$ini
echo "PROTOCOL:0=\"${PROTOCOL[$i]}\"" >>$ini
echo "USE_DHCP:0=\"${USE_DHCP[$i]}\"" >>$ini
flag=
if [[ ${USE_DHCP[$i]} == yes ]]; then
# get dhcp assigned ipv4 address & mask
NET=($(ip -4 addr show $IFACE|awk '/inet /{sub("/"," ",$2);print $2;exit}'))
@@ -140,7 +132,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
((x++))
done
fi
[[ "${PROTOCOL[$i]}" == *"ipv4"* ]] && flag=1
else
# get static assigned ipv4 address & mask
echo "IPADDR:0=\"${IPADDR[$i]}\"" >>$ini
@@ -166,7 +157,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
((x++))
done
fi
[[ "${PROTOCOL[$i]}" == *"ipv6"* ]] && flag=1
else
# get static assigned ipv6 address & prefix
echo "IPADDR6:0=\"${IPADDR6[$i]}\"" >>$ini
@@ -175,7 +165,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
echo "METRIC6:0=\"${METRIC6[$i]}\"" >>$ini
echo "PRIVACY6:0=\"\"" >>$ini
fi
[[ -n $flag && ($tag == $IFACE || $tag == init) ]] && dhcp=1
echo "MTU=\"${MTU[$i]}\"" >>$ini
if [[ -n ${VLANS[$i]} ]]; then
# process VLAN interfaces
@@ -185,7 +174,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
echo "DESCRIPTION:$j=\"${DESCRIPTION[$i,$j]}\"" >>$ini
echo "PROTOCOL:$j=\"${PROTOCOL[$i,$j]}\"" >>$ini
echo "USE_DHCP:$j=\"${USE_DHCP[$i,$j]}\"" >>$ini
flag=
if [[ ${USE_DHCP[$i,$j]} == yes ]]; then
DEV=$IFACE.${VLANID[$i,$j]}
# get dhcp assigned ipv4 address & mask
@@ -196,7 +184,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
echo "GATEWAY:$j=\"$GW\"" >>$ini
echo "METRIC:$j=\"${METRIC[$i,$j]}\"" >>$ini
data="${data}${ETH}_I_IPADDR:$j=${NET[0]} ${ETH}_S_NETMASK:$j=$(mask ${NET[1]}) ${ETH}_I_GATEWAY:$j=$GW "
[[ "${PROTOCOL[$i,$j]}" == *"ipv4"* ]] && flag=1
else
# get static assigned ipv4 address & mask
echo "IPADDR:$j=\"${IPADDR[$i,$j]}\"" >>$ini
@@ -216,7 +203,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
echo "METRIC6:$j=\"${METRIC6[$i,$j]}\"" >>$ini
echo "PRIVACY6:$j=\"${PRIVACY6[$i,$j]}\"" >>$ini
data="${data}${ETH}_I_IPADDR6:$j=${NET6[0]} ${ETH}_I_NETMASK6:$j=${NET6[1]} ${ETH}_I_GATEWAY6:$j=$GW6 "
[[ "${PROTOCOL[$i,$j]}" == *"ipv6"* ]] && flag=1
else
# get static assigned ipv6 address & prefix
echo "IPADDR6:$j=\"${IPADDR6[$i,$j]}\"" >>$ini
@@ -225,7 +211,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
echo "METRIC6:$j=\"${METRIC6[$i,$j]}\"" >>$ini
echo "PRIVACY6:$j=\"\"" >>$ini
fi
[[ -n $flag && ($tag == $IFACE || $tag == init) ]] && dhcp=1
done
else
# interface without VLANs
@@ -235,10 +220,9 @@ done
# atomically update file
/usr/bin/mv $ini ${ini%.*}
# the following section is executed on static only or on dhcp hook
if [[ (-n $1 && -z $dhcp) || (-z $1 && -n $dhcp) ]]; then
$reload >/dev/null 2>&1 &
fi
# delayed execution
rm -f /tmp/atjob.tmp
echo "sleep 40;$reload job"|at -M now 2>/dev/null
# send update information
if [[ -n $interface && -n $data && -e /var/run/nginx.socket ]]; then