Anhang: Netzwerkprofil
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #! /bin/bash -e # Netzwerkprofil: Wrapper zum Starten/Stoppen/Ändern/etc. # von Verbindungsprofilen für NetworkManager # (C) 2022 kB @ UbuntuUsers.de # SPDX-License-Identifier: GPL-2.0-or-later # https://spdx.org/licenses/GPL-2.0-or-later.html say () { echo $* ;} title () { echo -e "\e]0;$*\a" ;} case $* in (up|'') xdg-open /etc/NetworkManager/system-connections/ ; exit ;; (edit) nm-connection-editor ; exit ;; (down) title Disconnecting … shopt -s lastpipe nmcli --terse -f NAME connection show --active | readarray -t case ${#MAPFILE[@]} in (0) exit ;; (1) X=${MAPFILE[0]} ;; (*) PS3='Welche Verbindung trennen? ' select X in "${MAPFILE[@]}" do test -n "$X" && break ; done esac && nmcli connection down "$X" ;; (status) nmcli general ; say ; nmcli device ; say ;; (*) title Connecting «${1##*/}» until nmcli networking | grep -q enabled do say Set networking on … ; nmcli networking on ; done case $( nmcli -g connection.type connection show filename "$1" ) in (802-11-wireless) until nmcli radio wifi | grep -q enabled do say Set WIFI on … ; nmcli radio wifi on ; done ;; (gsm) until nmcli radio wwan | grep -q enabled do say Set WWAN on … ; nmcli radio wwan on ; done esac say Set profile «${1##*/}» up … nmcli connection up filename "$1" && clear || say Fehler $? esac nmcli connection read -t10 -n1 -s -r -p 'Press key to continue' || true say |
Dieses Skript wird im Artikel Desktop-Dateien/Beispiele (Abschnitt „Shell-Skript-Netzwerk-verbinden“) verwendet.
Das Programm erwartet einen Aufrufparameter; dies kann sein:
up: Es werden in einem Fenster des Dateimanagers alle gespeicherten Verbindungsprofile angezeigt.
edit: Der Verbindungseditor nm-connection-editor wird gestartet.
status: Es mit mit nmcli ein Netzwerk-Status angezeigt.
down: Wenn es genau ein aktives Verbindungsprofil gibt, dann wird dieses deaktiviert. Wenn es mehrere aktive Verbindungsprofile gibt, wird der Bediener zur Auswahl aufgefordert und das ausgewählte wird deaktiviert. Danach weiter wie bei status.
Ein Dateiname mit vollständigem Pfad zu einem Verbindungsprofil für den Desktop-Manager: Wenn dieses existiert, wird es aktiviert. Danach weiter wie bei status.
Wenn kein Parameter angegeben wird, verhält sich das Programm, als wäre es mit dem Parameter up
aufgerufen.
Das Programm kann von einer Kommandozeile gestartet werden oder aus einer Desktop-Datei, diese soll auch beim Öffnen eines Verbindungsprofils im Dateimanager erneut das Skript mit dieser Datei als Parameter starten.
Das Programm wurde mit Ubuntu 20.04 und 22.04 mit GNOME getestet und funktioniert ohne Änderung. Jedoch muss man es bei früheren Versionen (sicher bei 18.04) modifizieren:
In den beiden Zeilen mit
nmcli connection up filename …
muss die Auswahl über den Dateinamen ersetzt werden durch den Namen (
id
in der Datei). Die Ursache hierfür entsteht durch jeweils unterschiedliche Versionen von NetworkManager. Die ab Ubuntu 20.04 unterstützen die Selektion eines Verbindungsprofils über den Dateinamen, während ältere Versionen eine Selektion über den Namen des Profils erfordern. Eine stillschweigende Voraussetzung für die alte Methode ist die Übereinstimmung des Dateinamens mit dem Profilnamen; dies ist zwar immer zweckmäßig, aber technisch nie zwingend.In der Zeile für die Programmoption
up
muss der Befehlexit
entfernt werden. Der Grund hierfür liegt vermutlich in unterschiedlichen Aufrufverhalten der verwendeten Versionen der GNOME-Shell.