Files
small-package/luci-app-taskplan/root/usr/bin/taskplanhandler
2025-09-19 14:14:14 +08:00

159 lines
2.8 KiB
Bash

#!/bin/sh
# author 2021 jjm2473
# author 2020-2024 sirpdboy
TMP_T=/var/taskplan/taskplan.tmp
LOG=/etc/taskplan/taskplan.log
log(){
echo "$(date +'%Y-%m-%d %H:%M:%S') $*" >> $LOG
}
limit_log() {
local logf=$1
[ ! -f "$logf" ] && return
local sc=100
[ -n "$2" ] && sc=$2
local count=$(grep -c "" $logf)
if [ $count -gt $sc ];then
let count=count-$sc
sed -i "1,$count d" $logf
fi
}
remwan3() {
while true; do
status=$(/usr/sbin/mwan3 status | grep error)
if [ -z $status ]; then
log "Mwan3 is OK"
exit 1
else
log "mwan3 restarting ..."
/usr/sbin/mwan3 restart
fi
sleep 60
done
}
disreconnwan() {
i=0
PingA=114.114.114.114
PingB=223.5.5.5
while [[ $i -lt 5 ]]
do
if /bin/ping -c 1 $PingA >/dev/null
then
PingErr=0
break
else
if /bin/ping -c 1 $PingB >/dev/null
then
PingErr=0
break
else
i=$(($i + 1))
PingErr=1
sleep 10
fi
fi
done
}
trigger() {
case "$1" in
reboot)
reboot
;;
poweroff)
poweroff
;;
network)
/etc/init.d/network restart
;;
clearmem)
sync && echo 3 > /proc/sys/vm/drop_caches
;;
sysfree)
cd /overlay
rm -rf `ls | egrep -v '(upper|.fs_state)'`
cd upper
rm -rf `ls | egrep -v '(etc)'`
cd etc
rm -rf `ls | egrep -v '(config|ssr|bench.log|shadow)'`
rm -rf /var/luci-modulecache
rm -rf /var/luci-indexcache
rm -rf /tmp/cache/*
reboot
;;
restartsamba)
/etc/init.d/ksmdb restart
/etc/init.d/samba restart
/etc/init.d/samba4 restart
;;
restartlan)
ifdown lan && ifup lan
log "restart lan succeeded!"
;;
restartwan)
ifup wan
log "restart wan succeeded!"
;;
closewan)
ifdown wan
;;
disreconn)
disreconnwan
if [ $PingErr = 1 ]; then
ifup wan
log "Redial succeeded!"
fi
;;
disrereboot)
disreconnwan
if [ $PingErr = 1 ]; then
log "Reboot succeeded!"
reboot
fi
;;
restartmwan3)
[ -s /usr/sbin/mwan3 ] && remwan3
;;
customscript)
script=`cat /etc/taskplan/taskplancustomscript | wc -l`
if [[ $script > 0 ]] ;then
bash /etc/taskplan/taskplancustomscript
log "CustomScript succeeded!"
else
log "CustomScript run Error!"
fi
;;
customscript2)
script=`cat /etc/taskplan/taskplancustomscript2 | wc -l`
if [[ $script > 0 ]] ;then
bash /etc/taskplan/taskplancustomscript2
log "CustomScript2 succeeded!"
else
log "CustomScript2 run Error!"
fi
;;
upwifi)
ifconfig wlan0 up
uci set wireless.radio0.disabled=0
uci set wireless.radio1.disabled=0
uci commit wireless
wifi up
;;
downwifi)
ifconfig wlan0 down
uci set wireless.radio0.disabled=1
uci set wireless.radio1.disabled=1
uci commit wireless
wifi down
;;
esac
}
limit_log $LOG 500
PingErr=0
log "Scheduled operation $2: $1" && trigger $1