WLAN situativ einschalten

Vielleicht kennen Sie das Problem. Sie haben ein Notebook und nutzen es stationär und mobil. Wenn Sie das Notebook stationär nutzen, verwenden Sie den Ethernet-Anschluss, aber für den mobilen Einsatz benötigen Sie das WLAN. Also können Sie das WLAN nicht dauerhaft deaktivieren, aber wenn das Notebook über Ethernet verbunden ist, ist das WLAN überflüssig, unter Umständen störend (weil Sie zwei Verbindungen zum Router aufbauen und eine davon, nämlich das WLAN, deutlich langsamer ist als die andere, und es sich nicht genau sagen lässt, über welche der beiden aktiven Verbindungen Datenverkehr geleitet wird), und außerdem möchten Sie vielleicht Ihre Strahlenexposition minimieren, wenn das Notebook stationär verwendet wird. Da wäre es doch geschickt, wenn das System selbst entscheiden könnte, ob WLAN gerade gebraucht wird oder nicht. Hier ist ein mit Unterstützung von ChatGPT erstelltes Script, das diese Aufgabe in hinreichend modernen Linux-Distributionen (SystemD) mit dem bash-Interpreter erfüllt:

#!/bin/bash

# Ermittle die Gerätenamen für WLAN und Ethernet
WIFI="$(nmcli device status | grep "wifi " | awk '{print $1}')"
ETHN="$(nmcli device status | grep "ethernet " | awk '{print $1}')"

if [[ -z "$WIFI" || -z "$ETHN" ]]; then
    echo "Zuordnung der Netzwerk-Adapter fehlgeschlagen."
    exit 1
fi

# nmcli gibt den Status in der GENERAL.STATE-Spalte aus
# 20 entspricht 'nicht verbunden', 100 bedeutet 'verbunden'
wifiStatus="$(nmcli -g GENERAL.STATE device show $WIFI)"
ethnStatus="$(nmcli -g GENERAL.STATE device show $ETHN)"

# Prüfen, ob Ethernet verbunden ist (Status 100)
if [[ ! "$ethnStatus" =~ 100 ]]; then
    # Ethernet ist nicht verbunden
    if [[ "$wifiStatus" =~ 20 ]]; then
        # WLAN ist deaktiviert, schalte es ein
        nmcli radio wifi on
    fi
else
    # Ethernet ist verbunden
    if [[ ! "$wifiStatus" =~ 20 ]]; then
        # WLAN ist nicht deaktiviert, schalte es aus
        nmcli radio wifi off
    fi
fi

Das Script benötigt keine Admin-Rechte und kann im regulären User-Startup eingebunden werden.

PS: Der Operator „=~“ wird im Script als sozusagen infix-Suche verwendet. Die Ausgabe von nmcli ist nämlich „100 (verbunden)“ oder auch „100 (connected)“, bzw. abhängig von der eingestellten Sprache des Betriebssytems.

Ergänzung: Das Script funktioniert nur, wenn nur ein Ethernet- und nur ein WLAN-Adapter im System vorhanden sind. Falls Sie mehrere Adapter haben, müssten Sie das Script entsprechend anpassen. Um z.B. nur das jeweils erste Device zu verwenden:

WIFI="$(nmcli device status | grep "wifi " | head -1 | awk '{print $1}')"
ETHN="$(nmcli device status | grep "ethernet " | head -1 | awk '{print $1}')"

beziehungsweise wie es für Ihr System passend ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert