Python脚本新玩意树莓派自动化

分享一个树莓派Wifi断线自动重连的Python脚本

某些情况下树莓派可能通过WiFi方式连接网络,但是网络信号可能不稳定,树莓派默认情况下一旦掉线是不会自动重连的。若想实现树莓派的 WiFi 断线自动重连功能,我们可以编写简单的 Python 代码用于监测网络是否断线,如果断线则重启网络服务。

分享一个树莓派Wifi断线自动重连的Python脚本插图

一、环境配置

首先你需要安装Python组件(树莓派默认的Debian系统中已经预置了Python,若没有安装的话请跟随本步骤):

# 安装python
sudo apt install python

# 安装nano文本编辑器
sudo apt install nano

分享一个树莓派Wifi断线自动重连的Python脚本插图1

二、写入脚本

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断线自动重连》,部分内容稍有改动。