#!/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