Как автоматически подключить Wi-Fi?
Я использую свой pi для мониторинга своих счетчиков мощности. Данные передаются на ПК через Wi-Fi-соединение с помощью USB-адаптера Edimax EW-7811UN. Когда соединение Wi-Fi падает (выключено за ночь или шаткое соединение), USB-адаптер остается отключенным.
Есть ли способ перезапустить WiFi-соединение автоматически без повторного подключения адаптера WiFi?
7 ответов
Я предпочитаю отключать большую часть сетевой конфигурации конфигурации и управления данными демона и заниматься этим самостоятельно. Вот сценарий (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.
Ну, есть очень простое решение:
- Перейдите в
/etc/ifplugd/action.d/
и переименуйте файлifupdown
вifupdown.original
- Затем выполните:
cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
- Наконец:
sudo reboot
Вот и все. Проверьте это, выключив /включив AP; вы должны увидеть, что ваша малина Pi правильно воссоединяется.
Недавно я наткнулся на консольное приложение, которое сортирует всю конфигурацию беспроводной сети. Вы также можете использовать этот инструмент для настройки интерфейса LAN.
sudo apt-get install wicd-curses
Он установит довольно много других пакетов и запустит свой собственный демон в фоновом режиме, но он уверен, что упростить настройку всего. Запустите его с помощью
sudo wicd-curses
Это можно решить без дополнительных скриптов.
В /etc /network /interfaces поставить:
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
Роуминг позволяет интерфейсу самовосстанавливаться.
netcfg
Попробуйте netcfg
. Без дополнительной информации о том, какое распространение вы используете, я не могу предоставить более подробную информацию, но он должен делать то, что вы хотите.
Другое решение, извлеченное из этого .
Сначала настройте настройки 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 вашего плеера спустится вниз, а затем снова восстановится благодаря сценарию.
Это сработало для меня, используя Raspian Jessie на 30.March.2017:
http: //alexba. в /блог /2015/01/14 /автоматически-переподключения-WiFi-на-raspberrypi /