Как автоматически подключить Wi-Fi?

Я использую свой pi для мониторинга своих счетчиков мощности. Данные передаются на ПК через Wi-Fi-соединение с помощью USB-адаптера Edimax EW-7811UN. Когда соединение Wi-Fi падает (выключено за ночь или шаткое соединение), USB-адаптер остается отключенным.

Есть ли способ перезапустить WiFi-соединение автоматически без повторного подключения адаптера WiFi?

66 голосов | спросил andig 26 WedEurope/Moscow2012-12-26T15:29:25+04:00Europe/Moscow12bEurope/MoscowWed, 26 Dec 2012 15:29:25 +0400 2012, 15:29:25

7 ответов


29

Я предпочитаю отключать большую часть сетевой конфигурации конфигурации и управления данными демона и заниматься этим самостоятельно. Вот сценарий (bash), который будет поддерживать соединение до тех пор, пока сеть там, и у вас нет глючного драйвера Wi-Fi или проблем с питанием; идея состоит в том, чтобы ping маршрутизатор каждые N секунд, и если это не удается, повторно подключите:

 #!/bin/bash    

# make sure we aren't running already
what=`basename $0`
for p in `ps h -o pid -C $what`; do
        if [ $p != $$ ]; then
                exit 0
        fi
done

# source configuration
. /etc/wifi.conf

exec 1> /dev/null
exec 2>> $log
echo $(date) > $log
# without check_interval set, we risk a 0 sleep = busy loop
if [ ! "$check_interval" ]; then
        echo "No check interval set!" >> $log
        exit 1
fi

startWifi () {
        dhclient -v -r
    # make really sure
        killall dhclient
        iwconfig $wlan essid $essid
        dhclient -v $wlan
}

ifconfig $eth down
ifconfig $wlan up
startWifi

while [ 1 ]; do
        ping -c 1 $router_ip & wait $!
        if [ $? != 0 ]; then
                echo $(date)" attempting restart..." >> $log
                startWifi
                sleep 1
        else sleep $check_interval
        fi
done

Итак, /etc/wifi.conf в этом случае может содержать:

router_ip=192.168.0.1
log=/var/log/wifi.log
wlan=wlan0
eth=eth0
essid=someNetwork
check_interval=5

Все это предполагает открытую незашифрованную сеть (если в противном случае вам нужно будет добавить соответствующие команды). Я использовал этот подход на различных машинах linux, включая pi, и работает безупречно; он будет поддерживать систему онлайн на неопределенный срок, даже если она периодически переходит в спящий режим (что pi не может в любом случае).

Достойный интервал проверки составляет 3-5 секунд; эта деятельность не будет существенно влиять на системные ресурсы вообще.

Вам абсолютно необходимо сначала отключить автоматическую настройку сети . в том числе ifplugd и других сетевых демонах, или это будет мешать вашим усилиям:

Как отключить автоконфигурированную сеть на Raspbian?

Я действительно использовал apt-get remove ifplugd.

Чтобы начать работу в сети при загрузке (поскольку я использую pi без головы), у меня есть этот набор для запуска на raspbian из /etc/rc.local:

wifi_mod=`lsmod | grep 8192cu`
if [ "$wifi_mod" ]; then
        echo "Starting wifi..."
        /usr/bin/nice -n -10 /usr/local/bin/wifi &
else
        echo "Starting ethernet..."
        /sbin/ifconfig eth0 up
        /sbin/dhclient eth0
fi

/usr/local/bin/wifi - это скрипт. Если вы не знаете, для чего нужен nice, прочитайте man nice.

Точка if заключается в том, что если мой ключ wifi подключен к pi, модуль 8192cu будет загружен ядром в этот момент - так Wi-Fi должен начать. Если нет, то предполагается, что ethernet подключен и должен использоваться (если это не так, dhclient будет просто дерьмовать и нет доступа к сети).

Для этого вам, вероятно, придется

Таким образом, это получает безголовый пи в сети при загрузке и сохраняет его там. Если вам нужен способ переключения на eth во время работы без входа в систему, вы можете сделать что-то с помощью правил udev для вытаскивания ключа wifi.

ответил goldilocks 25 FebruaryEurope/MoscowbMon, 25 Feb 2013 19:15:31 +0400000000pmMon, 25 Feb 2013 19:15:31 +040013 2013, 19:15:31
66

Ну, есть очень простое решение:

  1. Перейдите в /etc/ifplugd/action.d/ и переименуйте файл ifupdown в ifupdown.original
  2. Затем выполните: cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
  3. Наконец: sudo reboot

Вот и все. Проверьте это, выключив /включив AP; вы должны увидеть, что ваша малина Pi правильно воссоединяется.

ответил AndaluZ 8 MarpmFri, 08 Mar 2013 19:48:59 +04002013-03-08T19:48:59+04:0007 2013, 19:48:59
19

Недавно я наткнулся на консольное приложение, которое сортирует всю конфигурацию беспроводной сети. Вы также можете использовать этот инструмент для настройки интерфейса LAN.

sudo apt-get install wicd-curses

Он установит довольно много других пакетов и запустит свой собственный демон в фоновом режиме, но он уверен, что упростить настройку всего. Запустите его с помощью

sudo wicd-curses

введите описание изображения здесь>> </p>

<p> <strong> Если вы получили сообщение о том, что сети не обнаружены, нажмите <code>P</code> (должен быть капитал, поэтому используйте [SHIFT] p) и введите wlan0 в поле беспроводного интерфейса и нажмите F10 для сохранения. </strong> </p>

<ol>
<li>
<code>R</code>, чтобы обновить список. </li>
<li> Используйте курсоры на клавиатуре для перемещения вверх и вниз по списку </li>
<li> Нажмите «Вправо», чтобы настроить беспроводное соединение. </li>
<li> Нажмите несколько раз и установите флажок «Автоматически подключаться к этой сети». </li>
<li> Нажмите несколько раз еще раз и введите пароль в поле ключа </li>
<li> Нажмите F10, чтобы сохранить </li>
</ol>
<p> <img src =

ответил ppumkin 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 25 Sep 2013 01:50:05 +0400 2013, 01:50:05
12

Это можно решить без дополнительных скриптов.

В /etc /network /interfaces поставить:

allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp

Роуминг позволяет интерфейсу самовосстанавливаться.

ответил David Sainty 15 Jam1000000amFri, 15 Jan 2016 04:08:20 +030016 2016, 04:08:20
1

netcfg

Попробуйте netcfg. Без дополнительной информации о том, какое распространение вы используете, я не могу предоставить более подробную информацию, но он должен делать то, что вы хотите.

ответил Alex Chamberlain 27 ThuEurope/Moscow2012-12-27T13:46:05+04:00Europe/Moscow12bEurope/MoscowThu, 27 Dec 2012 13:46:05 +0400 2012, 13:46:05
0

Другое решение, извлеченное из этого .
Сначала настройте настройки wifi: sudo vi /etc/wpa_supplicant/wpa_supplicant.conf добавив раздел, подобный этому:

network={
   ssid="MyNetworkName"
   psk="MyPaz0rdz"
   key_mgmt=WPA-PSK
}

Затем ваши сетевые настройки с помощью sudo vi /etc/dhcpcd.conf:

interface wlan0
inform 192.168.1.200 # the static ip for the wifi card
static routers=192.168.1.254 # your router's ip
static domain_name_servers=192.168.1.254 # your dns, usually=your router

Затем создайте этот файл сценария где-нибудь, например, в /home/pi/reconnect.sh и дайте ему возможность выполнять +x.

#!/bin/bash
router=`ip route | awk '/default/ {print $3}'`
/bin/ping -q -c1 $router > /dev/null

if [ $? -eq  0 ]
then
  true
  # echo "Network OK"
else
  echo "Network down, fixing..."
  # ifdown --force wlan0
  # sleep 5
  /bin/kill -9 `pidof wpa_supplicant`
  /sbin/ifup --force wlan0
  /sbin/ip route add default via $router dev wlan0
  /bin/mount -a
  echo "wlan0 reconnected at `date`"
fi

Затем войдите в систему как root с помощью sudo su и отредактируйте root crontab с помощью crontab -e.
В конце этого файла добавьте эту строку:

10 * * * * /home/pi/reconnect.sh

Это означает: «выполнить этот скрипт каждые 10 минут (с правами root)»

Теперь, если у вас есть соединение, скрипт выйдет, и ничего не произойдет. Если вы не можете выполнить ping вашего маршрутизатора, скрипт попытается подключиться к нему с помощью wpa_supplicant.

Обратите внимание, что все, что отражается от скрипта cron (в этом случае только при отключении), отправляется по электронной почте root. Поэтому, если вы настроили свои псевдонимы почты и постскриптум, вы получите электронное письмо всякий раз, когда ваше соединение Wi-Fi вашего плеера спустится вниз, а затем снова восстановится благодаря сценарию.

ответил Leonardo 27 Jpm1000000pmFri, 27 Jan 2017 20:25:38 +030017 2017, 20:25:38
-1

Это сработало для меня, используя Raspian Jessie на 30.March.2017:

http: //alexba. в /блог /2015/01/14 /автоматически-переподключения-WiFi-на-raspberrypi /

ответил Leonardo 27 Jpm1000000pmFri, 27 Jan 2017 20:25:38 +030017 2017, 20:25:38

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132