利用crontabs的延时重试脚本


主要是有可能早上的时候电已经来了, 但是网络中心那边却还没有开放网络认证的许可, 导致路由器开机的时候认证失败.
同时由于路由新开机, 时间还未与网络同步所以单纯的设置crontabs并不能起到作用.
而且由于我希望自己可以在教学区域愉快地顶掉宿舍里路由器的认证, 所以也并不能启用mentohust本身超时重认证机制.
所以采取了开机后如果发现网络无法认证, 则读取当前系统时间再加一延时添加进crontabs的方法实现等待再认证.

#!/bin/sh

DELAY=30
STAR=$(echo \\*)
#MINUTES=$(date | awk \'{print $4}\' | sed \'s/\\([0-9]\\+\\):\\([0-9]\\+\\):\\([0-9]\\+\\)/\\2/\')
#HOURS=$(date | awk \'{print $4}\' | sed \'s/\\([0-9]\\+\\):\\([0-9]\\+\\):\\([0-9]\\+\\)/\\1/\')
MINUTES=$(date +\'%M\')
HOURS=$(date +\'%H\')
MINUTES=$(expr $MINUTES + $DELAY)
HOURS=$(expr $HOURS + 0)

if [ "$MINUTES" -gt 60 ]; then
    MINUTES=$(expr $MINUTES - 60)
    HOURS=$(expr $HOURS + 1)
fi

CMD="$MINUTES $HOURS $STAR $STAR $STAR /etc/init.d/mentohust_d >> /tmp/mentohust_d.log"
sed \'$d\' /etc/crontabs/root > /etc/crontabs/root.tmp
cp /etc/crontabs/root.tmp /etc/crontabs/root
rm /etc/crontabs/root.tmp
echo "$CMD" >> /etc/crontabs/root