WLAN (drahtlos) automatisch deaktivieren, wenn verkabelt?

26

Wie kann ich meine WLAN- / WLAN-Verbindung automatisch deaktivieren, wenn ich ein kabelgebundenes Ethernet-Kabel einstecke? Ich möchte, dass es wieder aktiviert wird, wenn ich später den Draht abziehe.

Außerdem möchte ich manchmal die kabelgebundene Verbindung mit anderen kabellosen Benutzern teilen (oder umgekehrt). Es wäre schön, wenn ich diese Einstellungen irgendwie ausnehmen könnte.

Ich verwende 11.10 Oneiric, das NetworkManager verwendet.

Richard Hansen
quelle

Antworten:

31

Das folgende Skript /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wiredfunktioniert meistens - es deaktiviert die drahtlose Kommunikation, auch wenn ich sie drahtlos mit anderen teilen möchte oder umgekehrt.

Führen Sie dazu den folgenden Befehl im Terminal aus:

sudo nano /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired

Fügen Sie den folgenden Code in den Texteditor ein.

#!/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

Dann speichern und beenden.

Beachten Sie die folgenden Bedingungen im Skript, die in der NetworkManager-Handbuchseite dokumentiert sind :

Jedes Skript sollte sein:

  • eine reguläre Datei,
  • besessen durch wurzel,
  • nicht für Gruppen oder andere beschreibbar,
  • nicht set-uid,
  • und ausführbar vom Eigentümer.

Anstelle von nmcli radio wifi off(oder nmcli nm wifi offfür ältere Versionen von NetworkManager) gibt es auch rfkill block wifi. Wenn rfkilljedoch stattdessen verwendet nmcliwird, aktivieren neuere Versionen von NetworkManager das WLAN während des Startvorgangs wieder.

Richard Hansen
quelle
Wie kann das Skript erkennen, welche Konfiguration Sie wünschen? Warum tun rfkill unblock wifiSie nichts, nachdem Sie eine Verbindung hergestellt haben eth0und teilen möchten, und rfkill block wifiwenn Sie fertig sind?
Waltinator
@waltinator: Wenn eine Verbindung hergestellt wird, legt NetworkManager eine Umgebungsvariable CONNECTION_UUIDmit dem Bezeichner für diese Verbindung fest. Ich dachte, das Skript könnte so etwas wie nur WLAN für die Verbindung deaktivieren, die ich als "Standard" -verdrahtete Verbindung deklariert habe, aber eth0aktiviert lassen, wenn sie durch eine andere Verbindung aktiviert wird. Ich habe es nicht ausprobiert und weiß nicht, ob es funktioniert. Aber es ist eine gute Sache, sie nur manuell zu steuern.
Richard Hansen
1
Dient eth0|usb0)zum Deaktivieren / Aktivieren von WiFi, wenn USB-Tethering aktiviert / deaktiviert ist.
krlmlr
1
Am besten brauchbar! Anstatt rfkill zu verwenden, habe ich die Befehle nmcli nm wifi offund verwendet nmcli nm wifi on. Ich habe jedoch keinen besonderen Grund zu der Annahme, dass die nmcli-Befehle besser sind. Ich wollte einfach alles auf NetworkManager-Art machen.
Jesse Hallett
3
Die switch-Anweisung sollte "eth * | usb * | en *)" lauten, da ab udev197 die "Predictable Network Interface Names" [1] eingeführt wurden. Netzwerkkarten haben daher den Namen eno1 / ens1 und ähnliches und stimmen nicht mit den alten Bezeichnungen eth * und usb * überein. [1] freedesktop.org/wiki/Software/systemd/…
doublehelix