Автоматически отключать Wi-Fi (беспроводной) при подключении?
Каков наилучший способ автоматического отключения моего беспроводного / беспроводного соединения при подключении проводного кабеля Ethernet? Я бы хотел, чтобы он был снова включен, когда я позже отключу провод.
Кроме того, мне иногда нравится делиться проводным соединением с другими пользователями беспроводной сети (или наоборот). Было бы хорошо, если бы я мог как-то освободить эти настройки.
Я использую 11.10 Oneiric, который использует NetworkManager.
3 ответа
Следующий скрипт, вставленный в /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired
, в основном работает - он отключает беспроводную связь, даже когда я хочу поделиться проводной или беспроводной связью или наоборот.
Для этого выполните в терминале следующую команду:
sudo nano /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired
И вставьте следующий код в текстовый редактор.
#!/bin/sh
myname=${0##*/}
log() { logger -p user.info -t "${myname}[$$]" "$*"; }
IFACE=$1
ACTION=$2
release=$(lsb_release -s -c)
case ${release} in
trusty|utopic) nmobj=nm;;
*) nmobj=radio;;
esac
case ${IFACE} in
eth*|usb*|en*)
case ${ACTION} in
up)
log "disabling wifi radio"
nmcli "${nmobj}" wifi off
;;
down)
log "enabling wifi radio"
nmcli "${nmobj}" wifi on
;;
esac
;;
esac
Затем сохраните и выйдите.
Обратите внимание на следующие условия сценария, описанные на странице руководства NetworkManager:
Каждый скрипт должен быть:
- обычный файл,
- принадлежит root,
- не для записи группой или другим,
- не установлен,
- и исполняемый владельцем.
Вместо nmcli radio wifi off
(или же nmcli nm wifi off
для более старых версий NetworkManager), также есть rfkill block wifi
, Однако если rfkill
используется вместо nmcli
более новые версии NetworkManager снова включат Wi-Fi во время загрузки.
Основываясь на другом ответе, я придумал это (проверено на Kubuntu 20.04).
Он автоматически отключает Wi-Fi при проводном соединении, за исключением имен соединений, оканчивающихся на
-hotspot
(например, имена по умолчанию, которые Kubuntu использует для созданных подключений к точкам доступа). Это позволяет разделить беспроводную точку доступа с кабеля. Таким образом, вместо того, чтобы отключать радио для всех WiFi, он просто отключает сеть, которую вы используете. Когда кабель отключен, он повторно подключает беспроводное устройство
wlo1
, что заставляет его повторно подключаться к последней использовавшейся сети Wi-Fi.
Обратите внимание, что если вы выключите компьютер без кабеля и подключите его перед включением, он может запуститься как с Wi-Fi, так и с проводным подключением. Точно так же я предполагаю, что если вы отсоедините кабель, когда компьютер выключен, я думаю, он не будет автоматически подключаться при запуске.
sudo nano /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired
sudo chmod 0744 /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired
#!/bin/sh
myname=${0##*/}
log() { logger -p user.info -t "${myname}[$$]" "$*"; }
IFACE=$1
ACTION=$2
case ${IFACE} in
eth*|usb*|en*)
case ${ACTION} in
up) # when plugging ethernet cable
log "disconnecting wifi when wired"
# list active connections
nmcli -f uuid,type,name connection show --active |
# filter wifi except names ending with -hotspot, return UUID
awk '/\S\s+wifi\y/ && !/-hotspot\s*$/ {print $1;}' |
# disconnect these UUIDs
xargs -r nmcli connection down
;;
down) # when unplugging ethernet cable
log "reconnecting wifi when not wired"
# auto-choose wifi to reconnect
nmcli device connect wlo1
;;
esac
;;
esac
вы можете установить
tlp
package и включите следующие параметры в
/etc/tlp.conf
DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan"
DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi wwan"
а потом
sudo service tlp restart