Автоматически отключать Wi-Fi (беспроводной) при подключении?


26

Каков наилучший способ автоматического отключения моего беспроводного / беспроводного соединения при подключении проводного кабеля Ethernet? Я бы хотел, чтобы он был снова включен, когда я позже отключу провод.

Кроме того, мне иногда нравится делиться проводным соединением с другими пользователями беспроводной сети (или наоборот). Было бы хорошо, если бы я мог как-то освободить эти настройки.

Я использую 11.10 Oneiric, который использует NetworkManager.

Ответы:


31

Вставленный следующий скрипт, в /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 во время загрузки.


Как скрипт может сказать, какую конфигурацию вы хотите? Почему noy просто делать rfkill unblock wifiпосле того, как вы подключились, eth0и вы хотите поделиться, а затем, rfkill block wifiкогда вы закончите?
вальтинатор

@waltinator: при установлении соединения NetworkManager устанавливает переменную среды с именем, CONNECTION_UUIDидентифицирующим это соединение. Я думал, что скрипт может сделать что-то вроде отключения Wi-Fi для соединения, которое я объявил «стандартным» проводным соединением, но оставить его включенным, если eth0оно активировано другим соединением. Я не пробовал это, поэтому я не знаю, работает ли это. Но ваша точка зрения о том, чтобы просто контролировать это вручную, хороша.
Ричард Хансен

1
Используйте eth0|usb0)также для отключения / включения Wi-Fi, когда USB-модем активирован / деактивирован.
2011 года

1
Наиболее полезный! Вместо использования rfkill я использовал команды nmcli nm wifi offи nmcli nm wifi on. Но у меня нет особой причины полагать, что команды nmcli лучше. Я просто хотел сделать все с помощью NetworkManager.
Джесси Халлетт

3
Оператор switch должен читать «eth * | usb * | en *)», потому что, начиная с udev197, были введены «Предсказуемые имена сетевых интерфейсов» [1]. Таким образом, сетевые карты называются eno1 / ens1 и похожи и не соответствуют старым именам eth * и usb *. [1] freedesktop.org/wiki/Software/systemd/…
doublehelix
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.