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 (
idin 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
upmuss der Befehlexitentfernt werden. Der Grund hierfür liegt vermutlich in unterschiedlichen Aufrufverhalten der verwendeten Versionen der GNOME-Shell.