Я предпочитаю отключать большую часть работы демона автоматической настройки сети и управления соединениями и разбираюсь с этим сам. Вот скрипт (bash), который будет поддерживать соединение, пока есть сеть, и у вас нет проблем с драйвером Wi-Fi или проблемами с питанием; идея состоит в том, чтобы пинговать маршрутизатор каждые 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, и он работает безупречно; она будет поддерживать систему в сети неограниченное время, даже если она периодически переходит в спящий режим (чего пи в любом случае не может).
Достойный интервал проверки составляет 3-5 секунд; эта деятельность не окажет значительного влияния на системные ресурсы вообще.
Вам абсолютно необходимо сначала отключить автоконфигурацию сети . включая ifplugd
и другие сетевые демоны, или это будет мешать вашим усилиям:
Как отключить автоматическую настройку сети на Raspbian?
Я ведь использовал apt-get remove ifplugd
.
Для запуска сети при загрузке (так как я использую пи безголовый), у меня есть этот набор для запуска на 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 будет загружен ядром в этот момент - так что wifi должен запуститься. Если нет, то предполагается, что ethernet подключен и должен использоваться (если это не так, dhclient просто вылетит, и нет доступа к сети).
Для этого вам, вероятно, придется
Таким образом, это загружает безголовый пи в сеть при загрузке и сохраняет его там. Если вам нужен способ переключиться на eth во время работы без входа в систему, вы можете сделать что-то с помощью правил udev для извлечения ключа Wi-Fi.
rc.local
. Ротация журнала WRT, это отдельный вопрос, который относится к файлам журнала в целом (но см.man logrotate
). Прямо сейчас этот скрипт закроет (перезапишет) любой предыдущий журнал, если он существует с тем же путем, а не добавится. Для отладки я иногда использовалwifi.$$.log
в файле wifi.conf, так что последний журнал (маловероятно) будет засорен, и я могу сравнить один сеанс с другим после того, как что-то настроил.$$
PID процесса "Wi-Fi".Ну, есть очень простое решение:
/etc/ifplugd/action.d/
и переименуйтеifupdown
файл вifupdown.original
cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
sudo reboot
Вот и все. Проверьте это, выключив / включив AP; Вы должны увидеть, что ваш Raspberry Pi правильно подключился.
источник
action_wpa -> ../../wpa_supplicant/action_wpa.sh
, так что, может быть, сейчас это по умолчанию?dhcpcd
дистрибутивы основе для того, чтобы получить это работает на RPI3 вам нужноapt-get install rcconf
переходить отdhcpcd
кnetworking
Недавно я наткнулся на консольное приложение, которое разбирает все настройки беспроводной сети. Вы также можете использовать этот инструмент для настройки интерфейса локальной сети.
Он установит довольно много других пакетов и запустит своего собственного демона в фоновом режиме, но он, несомненно, значительно упростит настройку всего. Запустить его с
Если вы получили сообщение о том, что сети не обнаружены, нажмите
P
(должно быть заглавной, поэтому используйте [SHIFT] p) и введите wlan0 в поле беспроводного интерфейса и нажмите F10 для сохранения.R
обновить список.Возможно, вам придется нажать,
C
чтобы подключиться к точке доступа. Если вы подключены, это, скорее всего, убьет интерфейс локальной сети и включит беспроводную связь.Он также управляет соединением, поэтому он будет повторно подключаться к любым настроенным точкам беспроводного доступа, если он по какой-либо причине выпадет.
Я проверил подключение адаптера WiFi и его подключение обратно. Это займет около 60 ~ 90 секунд, но он снова подключится к WiFi (хотя я думаю, что локальная сеть должна быть отключена)
Надеюсь, это поможет!
источник
wicd
wicd-curses
мой RPi 3 начал зависать случайно. Никогда не замораживался прежде, и замораживание исчезло немедленно, как только я удалил это. Осторожно!Это можно решить без лишних сценариев.
В / etc / network / interfaces поместите:
allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
Роуминг позволяет самовосстановлению интерфейса.
источник
netcfg
Попробуй
netcfg
. Без дальнейших подробностей о том, какой дистрибутив вы используете, я не могу предоставить гораздо больше, но он должен делать то, что вы хотите.источник
Другое решение, как извлечено из этого .
Сначала настройте свои настройки Wi-Fi:
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
добавьте раздел следующим образом:Тогда ваши настройки сети с
sudo vi /etc/dhcpcd.conf
:Затем создайте этот файл сценария где-нибудь, например, в
/home/pi/reconnect.sh
и дайте ему+x
разрешение быть исполняемым.Затем войдите в систему как root с помощью
sudo su
и отредактируйте crontab с помощью rootcrontab -e
.В конце этого файла добавьте эту строку:
10 * * * * /home/pi/reconnect.sh
Это означает: «выполнять этот скрипт каждые 10 минут (как root)»
Теперь, если у вас есть соединение, скрипт завершится, и ничего не произойдет. Если вы не можете пропинговать свой маршрутизатор, тогда скрипт попытается подключиться к нему с помощью wpa_supplicant.
Обратите внимание, что все, что отражено в скрипте cron (в данном случае только при отключении), будет отправлено пользователю root по электронной почте. Так что, если вы настроили свои почтовые псевдонимы и postscript, вы будете получать электронное письмо всякий раз, когда Wi-Fi-соединение вашего pi прерывается, а затем успешно возвращаться снова благодаря сценарию.
источник
Это сработало для меня, используя Raspian Jessie 30 марта 2017 года:
http://alexba.in/blog/2015/01/14/automatically-reconnecting-wifi-on-a-raspberrypi/
источник