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


26

Який найкращий спосіб автоматичного відключення мого Wi-Fi / бездротового з'єднання кожного разу, коли я підключаю провідний 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 :

Кожен сценарій повинен бути:

  • звичайний файл,
  • належить корінь,
  • не підлягає написанню для групи чи інших,
  • не встановлено,
  • і виконується власником.

Замість nmcli radio wifi off(або nmcli nm wifi offдля старих версій NetworkManager) також існує rfkill block wifi. Однак, якщо rfkillвикористовується замість nmcliбільш нові версії NetworkManager поверне WiFi спиною під час завантаження.


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

@waltinator: Коли з'являється з'єднання, NetworkManager встановлює змінну середовища, названу CONNECTION_UUIDідентифікатором цього з'єднання. Я думав, що сценарій може зробити щось на кшталт лише відключити WiFi для з'єднання, який я оголосив "стандартним" дротовим з'єднанням, але залиште його включеним, якщо eth0він активований іншим з'єднанням. Я не пробував його, тому не знаю, чи працює він. Але ваша думка про те, щоб просто керувати нею вручну, є хорошою.
Річард Хансен

1
Використовуйте eth0|usb0)також, щоб вимкнути / увімкнути Wi-Fi, коли ввімкнення / вимкнення USB-зв’язку.
krlmlr

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

3
Оператор перемикача повинен читати "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.