树莓派一直连着宿舍wifi,今天重启路由器后发现树莓派居然没有自动连上wifi!害得我又用网线连了一次。。。
为了防止断网,我搞了这么一个脚本,很简单,10s内(时间够长了吧)检测到百度 ping 不通时,重启无线网卡,如果还是不行则重启系统

#! /bin/bash
##检测wifi网络连接
log=/root/network/wifi.log
##判断输出日志文件是否存在
if [[ ! -f ${log} ]]; then
   touch ${log}
fi
##检测ssh是否连接
ss | grep "ssh"
if [[ $? -eq 0 ]]; then
    echo `date` 检测到正在使用ssh,跳过... >> ${log}
else
    ##ping百度
    ping_count() {
        count=0
        timeout 10 ping www.baidu.com | while read LINE; do
        {
            if [[ "${LINE}" =~ "64 bytes from" ]]; then
                let "count = $count + 1"
                echo "export count=$count"
            fi
        }
        done
    echo $count
    }
    if [[ $(ping_count) < 1 ]]; then
        echo `date` 检测到wifi网络异常,正在重启wifi... >> ${log}
        systemctl restart [email protected]
        sleep 10
        if [[ $(ping_count) < 1 ]]; then
            echo `date` 重启wifi后网络异常,正在重启系统... >> ${log}
            reboot
        else
            echo `date` 重启wifi后网络正常 >> ${log}
        fi
    else
        echo `date` wifi网络正常 >> ${log}
    fi
fi

保存上方脚本到 /root/network/wifi_check.sh
日志文件在 /root/network/wifi.log
之后在 crontab root用户配置文件 /var/spool/cron/root 中添加

##每小时分钟数整除5的时候运行该脚本
*/5 *   * * *   sh /root/network/wifi_check.sh
##每月一号删除日志
0 0     1 * *   rm /root/network/wifi.log