树莓派一直连着宿舍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 netctl-auto@wlan0.service
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