前言
树莓派系统版本 Raspbian 10 buster
代码参考:https://github.com/dweeber/WiFi_Check/blob/master/WiFi_Check
尝试了网上许多解决方案,但都遇到一些问题而无法实现自动重连,现在给出自己尝试修改,并且测试成功的
问题描述
在树莓派zero W WiFi断网后,不会自动重连,手动使用
sudo ifdown wlan0 ;sudo ifup wlan0
(显示错误信息unknown interface wlan0,在这个系统版本不能使用)
或者
sudo /etc/init.d/networking restart
命令都不会自动重连
解决方案
首先在/usr/local/bin/创建可执行文件
vim /usr/local/bin/WiFi_Check
输入下面的shell脚本
#!/bin/bash
wlan='wlan0'
#检查WiFi连接情况
echo
echo "开始检查 $wlan"
echo
if ifconfig $wlan |grep -q "inet"; then
echo "WiFi已连接"
else
echo "WiFi失联"
sudo wpa_supplicant -B -i $wlan -c /etc/wpa_supplicant/wpa_supplicant.conf
sleep 5
sudo dhclient $wlan
fi
echo
echo "当前设置:"
ifconfig $wlan | grep "inet"
echo
exit 0
加执行权限
sudo chmod +x /usr/local/bin/WiFi_Check
使用系统级crontab,创建一个每隔5分钟就执行的命令
sudo vim /etc/crontab
在最后一行加上
*/5 * * * * root /usr/local/bin/WiFi_Check
文件路径要填写正确,可以根据自己的更改
保存之后无需重启,这时候应该就可以自动断线重连了
提示
使用ifconfig查看网卡名称,然后将脚本中wlan的值改成对应名称