thumb Мой Raspberry Pi подключен к локальной сети по WiFi с помощью USB WiFi адаптера «ASUS USB-N10» и при сбоях в сети (например когда рутер зависает или перезагружается) RPi не переподключается к WiFi сети. Чтобы исправить эту ситуацию Я написал маленький сценарий на «Shell» проверяющий доступность сети пингуя рутер и перезапускающий интерфейс wlan0. После записи в cron сценарий будет проверять сеть каждую минуту.



  • Name: ifdown_net.sh
  • Description: Ping host and restart interface if host is down
  • Language: Shell
#!/bin/sh
#=============================================================#
# Name:         If Down Net                                   #
# Description:  Checking the net by ping and restart          #
#               interface if is need                          #
# Version:      ver 1.0                                       #
# Data:         10.7.2014                                     #
# Author:       Arthur Gareginyan                             #
# Author URI:   http://arthurgareginyan.com                   #
# Email:        arthurgareginyan@gmail.com                    #
# License:      GNU General Public License, version 3 (GPLv3) #
# License URI:  http://www.gnu.org/licenses/gpl-3.0.html      #
#=============================================================#

#                       USAGE:
#               chmod +x ifdown_net.sh
#     Add folowing line to the end of the /etc/crontab :
#     */1  *    * * *   root    /home/user/ifdown_net.sh

# The host to test by ping. You can use IP or domain name.
HOST="192.168.1.1"

# The device wich need to reload
DEVICE='wlan0'

########################## BEGIN ##############################
# Check the availability of a host
ping -c 3 $HOST >/dev/null 2>&1

# Restart interface if host is down
if [ $? -ne 0 ] ; then
        ifup $DEVICE ; 
fi

exit 0

В коде нужно исправить переменные HOST и DEVICE на необходимые.

Дадим права на исполнение:

chmod +x ifdown_net.sh

И сделаем запись в cron для автоматического запуска скрипта каждую минуту:

sudo nano /etc/crontab
# Test interface and reload if need
*/1  *    * * *   root    /home/user/ifdown_net.sh

Если хочется запускать не каждую минуту, а например каждые 5 минут, тогда нужно исправить 1 на 5.


Fork on Github


Arthur Gareginyan

Arthur Gareginyan

Arthur is a designer and full stack software engineer. He is the founder of MyCyberUniverse.com. His personal website can be found at arthurgareginyan.com. Check out his free WordPress plugins at wordpress.org.

Follow Arthur: