某些情况下树莓派可能通过WiFi方式连接网络,但是网络信号可能不稳定,树莓派默认情况下一旦掉线是不会自动重连的。若想实现树莓派的 WiFi 断线自动重连功能,我们可以编写简单的 Python 代码用于监测网络是否断线,如果断线则重启网络服务。
一、环境配置
首先你需要安装Python组件(树莓派默认的Debian系统中已经预置了Python,若没有安装的话请跟随本步骤):
# 安装python sudo apt install python # 安装nano文本编辑器 sudo apt install nano
二、写入脚本
1.写入如下Python代码并将文件命名为autowifi.py,放置在/home/pi目录下:
脚本解释为:每5分钟检测一次网络状态,若不存在“192”关键字(可自行修改为其他内网ip)则判断为Wifi掉线。
若 WiFi 断线,则自动重启网络服务。
nano /home/pi/autowifi.py #!/usr/bin/python import os, time while True: if '192' not in os.popen('ifconfig | grep 192').read(): print '\n****** wifi is down, restart... ******\n' os.system('sudo /etc/init.d/networking restart') time.sleep(5*60) #5 minutes
PS:按Ctrl+X键保存文本,若遇到询问,键入Y然后回车即可保存。
2.写入如下Shell脚本并将文件命名为autowifi.sh,也放置在 /home/pi 目录下:
nano /home/pi/autowifi.sh #!/bin/sh python /home/pi/autowifi.py &
3.将这两个脚本设置为可执行状态
chmod +x /home/pi/autowifi.*
三、加入开机启动
若要实现开机自动启动以上脚本,需要在终端窗口执行以下命令即可
sudo cp -f /home/pi/autowifi.sh /etc/init.d/ sudo chmod +x /etc/init.d/autowifi.sh sudo chown root:root /etc/init.d/autowifi.sh sudo update-rc.d autowifi.sh defaults
以上代码在树莓派官方系统Raspbian Buster(2019-09-26)测试通过。
(END)
本文源自以下链接《Python脚本实现树莓派WiFi断线自动重连》,部分内容稍有改动。