Автоматически отключать 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

вы можете установить tlppackage и включите следующие параметры в /etc/tlp.conf

      DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan"
DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi wwan"

а потом

      sudo service tlp restart
Другие вопросы по тегам