订阅趣无尽微信公众号

Python实现树莓派WiFi断线自动重连

实现 WiFi 断线自动重连。原理是用 Python 监测网络是否断线,如果断线则重启网络服务。

1.Python 代码 autowifi.py,放在 /home/pi 目录下:

#!/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

2.Shell脚本autowifi.sh,也放在 /home/pi 目录下:

#!/bin/sh
python /home/pi/autowifi.py &

3.开机自动启动以上脚本:在终端窗口执行以下命令即可

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 

每5分钟检测一次,若 WiFi 断线,则自动重新连接。

本文来自:树莓派实验室
链接地址:http://shumeipai.nxez.com/2017/01/25/raspberry-pi-wifi-broken-automatically-reconnect.html

5 Responses

  1. Katze 2017年2月14日 / 21:35

    不知道为什么我的树莓派3通过命令 ‘sudo /etc/init.d/networking restart’ 无法重启wifi,尝试了许多别的语句发现只有 sudo ifup wlan0 才有效果。然后把wifi检测的命令换成’sudo wpa_cli status’把第一部分的代码改成这个样子,供大家参考一下。

    #!/usr/bin/python
    import os,time

    while True:
    return1=os.system(‘sudo wpa_cli status’)#check wifi connection
    if return1:
    print(‘\n******wifi is down, restrart…***\n’)
    os.system(‘sudo ifup wlan0’)

    time.sleep(5*60) #5 minutes

  2. admin 2017年2月17日 / 17:12

    感谢楼上反馈!

  3. Maplelan 2017年3月11日 / 17:36

    执行sudo update-rc.d autowifi.sh defaults的时候会提示错误Missing LBS Tags,核对了一下其他步骤并没有错,这条错误提示可以忽略吗?

  4. dd 2017年4月7日 / 16:29

    666

  5. Geeksun 2017年12月11日 / 01:33

    可能是因为我太菜的原因,导入之后wifi模块和蓝牙模块变灰,请新手谨慎使用,解决办法删除导入的代码。

发表评论

电子邮件地址不会被公开。 必填项已用*标注