Hanlen
11/27/2019 - 3:03 AM

router restart

#!/bin/bash

declare -i count=0
MAXTESTCOUNT=2
for i in {1..$MAXTESTCOUNT} ;do 
    ping -c 2 -i 1 baidu.com
    #ping -c 2 -i 1 test1.com
    if [ $? -ne 0 ]; then 
        count=`expr ${count} + 1` 
    fi
done

if [ $count -ge $MAXTESTCOUNT ]; then 
    if [ -f /root/rb.flag ]; then
        # get interval
        declare -i interval=0
        if [ -f /root/interval.reboot ]; then
           interval=`cat /root/interval.reboot` 
        else
            interval=300
        fi

        # check interval
        cur=`date +%s`
        last=`cat /root/rb.flag`
        sub=`expr $cur - $last - $interval`
        if [ $sub -gt 0 ]; then
            #update interval and the time of the last rebooted, and reboot
            if [ $interval -lt 1800 ]; then
                interval=`expr $interval + 300`
                echo $interval > /root/interval.reboot
            fi

            now=`date +%s`
            nexttimepoint=`expr $now + $interval`
            echo $nexttimepoint > /root/rb.flag

            echo "reboot now"
            reboot -f 
        else
            exit 0
        fi
    else
        echo "reboot now"
        date +%s > /root/rb.flag
        reboot -f
    fi
else 
    rm -f /root/rb.flag /root/interval.reboot
fi