Linux: Автоматическое отключение wlan0 если подключен кабель в eth0
Не стандартная проблема: необходимо на linux (ubuntu, debian, raspberry, и т.д.) автоматически отключать WiFi-интерфейс при подключении кабеля ethernet-коннектор и включать, при отсоединении кабеля.
Такая необходимость может возникнуть в нескольких случаях: например если оба сетевых устройства находятся в одной подсети, то, естественно, лучше будет связь по проводу и/или если вы хотите что бы у вас не менялся IP-адрес, не зависимо от того как вы подключены к своей локальной сети.
ifplugd демон обеспечивает аккуратный фундамент, на который мы можем опираться. Если ваш интерфейс eth0 объявлен с возможностью горячей замены, тогда ifplugd запускает специальный скрипт каждый раз, когда кабель вставлен или удален. Мы можем настроить этот сценарий, чтобы включить или отключить интерфейс wlan0
Итак...
1. устанавливаем ifplugd
2. запускаем программу конфигурации и устанавливаем auto для статических интерфейсов и all для всех подключаемых интерфейсов.
3. прописываем в файл /etc/ifplugd/action.d/ifupdown
это содержимое:
4. так же надо прописать в конфиг /etc/default/ifplugd это:
5. следующим шагом нам необходимо убедиться, что eth0 определяется как allow-hotplug в файле /etc/network/interfaces и настроить сеть
а) для простого случая, когда вы ходите в сеть с помощью dhcp
б) для варианта, когда вы хотите иметь один и тот же IP-адрес, независимо от того, через какой интерфейс вы подключены к сети:
PS:
7. в некоторых случаях не устанавливался gateway по-умолчанию, в таком случае поможет это решение:
ifplugd: Plug in cable while on wireless -> no default route
нужно в файл /etc/ifplugd/action.d/action_wpa после строки:
---
Найдено и доработано на просторах: Raspberry Pi Networking - Switching between wired and wireless networks in Raspbian & Debian
Такая необходимость может возникнуть в нескольких случаях: например если оба сетевых устройства находятся в одной подсети, то, естественно, лучше будет связь по проводу и/или если вы хотите что бы у вас не менялся IP-адрес, не зависимо от того как вы подключены к своей локальной сети.
ifplugd демон обеспечивает аккуратный фундамент, на который мы можем опираться. Если ваш интерфейс eth0 объявлен с возможностью горячей замены, тогда ifplugd запускает специальный скрипт каждый раз, когда кабель вставлен или удален. Мы можем настроить этот сценарий, чтобы включить или отключить интерфейс wlan0
Итак...
1. устанавливаем ifplugd
sudo apt-get install ifplugd
2. запускаем программу конфигурации и устанавливаем auto для статических интерфейсов и all для всех подключаемых интерфейсов.
sudo dpkg-reconfigure ifplugd
3. прописываем в файл /etc/ifplugd/action.d/ifupdown
sudo nano /etc/ifplugd/action.d/ifupdown
это содержимое:
#!/bin/bash set -e case "$2" in up) /sbin/ifup $1 if [ "$1" == "eth0" ]; then /sbin/ifdown wlan0 ; fi # This is a new bit ;; down) /sbin/ifdown $1 if [ "$1" == "eth0" ]; then /sbin/ifup wlan0 ; fi # Another new bit ;; esac
4. так же надо прописать в конфиг /etc/default/ifplugd это:
INTERFACES="auto" HOTPLUG_INTERFACES="eth0 wlan0" ARGS="-q -f -u10 -d10 -w -I -l --iface=eth0" SUSPEND_ACTION="none"
5. следующим шагом нам необходимо убедиться, что eth0 определяется как allow-hotplug в файле /etc/network/interfaces и настроить сеть
sudo nano /etc/network/interfaces
а) для простого случая, когда вы ходите в сеть с помощью dhcp
auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
б) для варианта, когда вы хотите иметь один и тот же IP-адрес, независимо от того, через какой интерфейс вы подключены к сети:
auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet static address 192.168.0.5 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.254 auto wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp iface aoakley-home inet static address 192.168.0.5 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.2546. осталось только перезапустить компьютер :)
PS:
7. в некоторых случаях не устанавливался gateway по-умолчанию, в таком случае поможет это решение:
ifplugd: Plug in cable while on wireless -> no default route
нужно в файл /etc/ifplugd/action.d/action_wpa после строки:
wpa_cli -i "${IFACE}" "${COMMAND}"добавить это:
# Wait for default route for IFACE to disappear. if [ "${COMMAND}" = "disconnect" ] ; then X=$(ip route list | grep default | cut -d" " -f5) while [ "$X" = "${IFACE}" ] do X=$(ip route list | grep default | cut -d" " -f5) done fi
---
Найдено и доработано на просторах: Raspberry Pi Networking - Switching between wired and wireless networks in Raspbian & Debian
Похожие материалы:
Комментарии:
22 Мая 2017 (21:26:48)
Andrew
(гость)
• ответить
Если стоит NM, то ничего доставлять не нужно. Такой скрипт кладется в /etc/NetworkManager/dispatcher.d/
8 Августа 2017 (09:17:30)
qashqir
(гость)
• ответить
Существует ли подобное решение для HDMI (автопереключение звука при подключении hdmi кабеля)?
31 Октября 2018 (09:57:11)
Oleksa
(гость)
• ответить
у меня єто решается с помощью tlp https://linrunner.de/en/tlp/tlp.html