nmcli
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 24.04 Noble Numbat
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dieser Artikel beschreibt, wie man den NetworkManager[4] ohne grafische Oberfläche konfigurieren und bedienen kann. Dies erfolgt sowohl bei Desktops als auch bei Servern auf der Kommandozeile[3] oder in Skripten über das universelle Kommandozeilenprogramm nmcli
(NetworkManager Command Line Interface).
⚓︎
Es gibt weitere Bedienoberflächen mit gegenüber nmcli
eingeschränkter Funktionalität; diese sind im Hauptartikel zu Networkmanager[4] beschrieben:
nm-applet – Symbol im Panel eines Desktops
nm-connection-editor – grafischer Editor für Verbindungsprofile
nmtui – halb-grafischer Editor für Verbindungsprofile (benutzt Bibliothek NCURSES)
Installation¶
Das Kommandozeilenprogramm nmcli
ist das Dienstprogramm zu NetworkManager[4], welcher bei Ubuntu-Desktops immer standardmäßig installiert wird und zur Konfiguration von Netzwerkverbindungen eingesetzt wird. Bei Desktops ist nichts zusätzlich zu installieren[1].
Ubuntu-Server verwenden systemd-networkd zur Konfiguration des Netzwerks. Man kann das umstellen auf NetworkManager, was aber hier nicht beschrieben wird. ( → Hinweise) Auf jeden Fall benötigt man:
network-manager (Rahmenwerk zur Netzwerkverwaltung (Dienst und Werkzeuge für die Nutzerumgebung) aus main)
Befehl zum Installieren der Pakete:
sudo apt-get install network-manager
Oder mit apturl installieren, Link: apt://network-manager
Bedienung¶
Man benutzt das Programm nmcli
zur Abfrage von das Netzwerk betreffenden Einstellungen und Zustandsdaten (Status) sowie zur Steuerung (Auf- und Abbau) von Netzwerkverbindungen über Verbindungsprofile. Ein Verbindungsprofil ist eine Sammlung von Eigenschaften, die bei einer Kommunikation über ein Netzwerk eine Rolle spielen, dazu gehören Adressen und Routen, zulässige Telegrammlänge, Übertragungsgeschwindigkeit und vieles mehr. Man kann solche Verbindungsprofile mit nmcli
erstellen, ändern und löschen.
Ausgabeformate¶
Das Programm kennt drei Ausgabeformate für unterschiedliche Anwendungszwecke:
Tabelle 1: Auswahl des Ausgabeformates | |||
Format | Option | Beispiel | Beschreibung |
ausführlich | --pretty -p | nmcli --pretty device | Gut lesbar in der eingestellten Sprache mit zusätzlichen Formatierungen, besonders geeignet zur Bedienerführung. |
normal | nmcli device | Gut lesbar in der eingestellten Sprache, Standardmodus bei allen Arbeiten auf der Kommandozeile. | |
kurz und knapp | --terse -t | nmcli -t device | Kompaktes, schlecht lesbares Format, aber gut geeignet zur Weiterverarbeitung in Skripten. Ausgabe wird nicht übersetzt. |
Beispielausgaben:
Ausführlich:
===================== Status der Geräte ===================== DEVICE TYPE STATE CONNECTION ----------------------------------------------------------------------------------------------- cable ethernet verbunden 90_DHCP+SLAAC-Client global lo loopback verbunden (extern) lo radio wifi nicht verbunden -- HUB bridge nicht verwaltet --
Normal:
DEVICE TYPE STATE CONNECTION cable ethernet verbunden 90_DHCP+SLAAC-Client global lo loopback verbunden (extern) lo radio wifi nicht verbunden -- HUB bridge nicht verwaltet --
Kurz und knapp:
cable:ethernet:connected:90_DHCP+SLAAC-Client global lo:loopback:connected (externally):lo radio:wifi:disconnected: HUB:bridge:unmanaged:
Die Ausgaben unterscheiden sich nur in Darstellung und ggf. Sprache; die Inhalte sind identisch.
Aufruf¶
Das Programm nmcli
wird im Terminal[3] immer als normaler Benutzer aufgerufen[2] und niemals wird ein sudo
voran gestellt. NetworkManager verschafft sich bei Bedarf erweiterte Rechte über PolicyKit.
Die Grundstruktur aller Aufrufe entspricht diesem Schema:
nmcli OPTIONEN BEREICH KOMMANDO-mit-Parametern
OPTIONEN darf leer sein. Ein Beispiel für Optionen sind die bereits vorgestellten Formate, weitere werden unten beschrieben.
BEREICH ist eines der Worte
general, networking, radio, connection, device, agent, monitor
oderhelp
. Man darf diese Angabe abkürzen, solange sie eindeutig bleibt. → BeispieleKOMMANDO-mit-Parametern darf leer sein, dann wird ein Standardkommando ausgeführt und es werden Informationen angezeigt. Die zulässigen Kommandos hängen vom BEREICH ab, jeder BEREICH kennt das KOMMANDO
help
. Auch das Kommando selbst (d.h. das erste Wort von KOMMANDO-mit-Parametern) darf man abkürzen, solange die Angabe eindeutig bleibt, jedoch gilt das nicht für eventuell folgende Parameter.
Der Befehl kennt außerdem die Vervollständigung über die Tabulatortaste Tab ⇆ , auch für alle Zusätze auf der Kommandozeile.
Beispiele¶
Status abfragen¶
Einen Überblick des momentanen Zustands des Netzwerks erhält man mit diesen Befehlen:
nmcli general nmcli device nmcli connections
Der erste Befehl zeigt an, ob und wie gut man mit dem Rest der Welt verbunden ist.
Der zweite Befehl zeigt eine Liste der NetworkManager bekannten Schnittstellen und deren Status (STATE):
Die Angabe
„verbunden“
bedeutet, dass diese Schnittstelle in Gebrauch ist.Weitere Über NetworkManager – und damit
nmcli
– grundsätzlich betreibbare Schnittstellen sind„nicht verbunden“
.Nicht betriebsfähige Schnittstellen erscheinen als
„nicht verfügbar“
oder„nicht verwaltet“
.Die Angabe
„nicht verwaltet“
(unmanaged
) ist zu lesen als, „diese Schnittstelle wird nicht von NetworkManager verwaltet“; es kann aber im System ein weiteres Konfigurationsprogramm wie z.B. systemd-networkd geben, welches sich um diese Schnittstelle kümmert.
Der dritte Befehl zeigt eine Liste mit allen verfügbaren Verbindungsprofilen.
Verbindung aufbauen und beenden¶
Dafür gibt es Befehle wie in Tabelle 2. Der hier beispielhaft gewählte Schnittstellenname eth0
ist durch den Namen einer vorhandenen Schnittstelle zu ersetzen. PROFIL identifiziert das konkrete Verbindungsprofil über dessen Namen oder dessen UUID (dann mit voran gestelltem Schlüsselwort uuid
).
Tabelle 2: Befehle zum Verbinden und Trennen | |
Befehl | Wirkungen |
nmcli device connect eth0 | 1. Wenn bereits eine Verbindung über die Schnittstelle eth0 besteht, so wird diese getrennt.2. Es werden alle Verbindungsprofile gesucht, welche zur Schnittstelle eth0 passen; dazu muss der Typ des Profils zum Typ der Schnittstelle passen und im Profil muss entweder genau diese Schnittstelle oder gar keine eingetragen sein. Auch Profile mit nicht automatischer Verbindung werden berücksichtigt. Wenn es kein passendes Verbindungsprofil gibt, wird automatisch ein temporäres Profil angelegt.3. Die so ausgewählten Verbindungsprofile werden nacheinander ausprobiert, bis eines funktioniert. |
nmcli device up eth0 | |
nmcli connection up PROFIL | 1. Es wird zuerst die Schnittstelle bestimmt, auf die der Befehl angewendet werden soll. Die Schnittstelle kann entweder explizit im Profil angegeben sein oder alle es werden alle Schnittstellen des passenden Typs ohne bestehende Verbindung selektiert. 2. Es wird versucht, nacheinander über jede selektierte Schnittstelle mit dem Profil PROFIL zu verbinden bis das gelingt. |
nmcli device disconnect eth0 | Eine existierende Verbindung über die Schnittstelle eth0 wird getrennt. Diese Schnittstelle wird nicht mehr automatisch aktiviert. |
nmcli device down eth0 | |
nmcli connection down PROFIL | Eine existierende Verbindung mit dem Profil PROFIL wird getrennt. Die benutzte Schnittstelle bleibt für automatische Verbindungsversuche aktiviert. |
Optionen¶
Eine vollständige Liste aller OPTIONEN erhält man mit dem Befehl:
nmcli help
In der Tabelle 3 werden einige ausgewählte Optionen erläutert, soweit diese für das Verständnis der in diesem Artikel gezeigten Beispiele benötigt werden.
Tabelle 3: Ausgewählte Optionen | |
Option | Beispiel und Beschreibung |
--fields FELDLISTE -f FELDLISTE | nmcli -f name,autoconnect,autoconnect-priority connection all oder das Wort common Es werden nicht die Standardvariablen, sondern die angegebenen gelistet; all steht natürlich für alle und common für eine oft nachgefragte Auswahl (= Standardauswahl), die auch gilt, wenn man die Option -f nicht verwendet. |
--get-values FELDLISTE -g FELDLISTE | nmcli -g general.device,IP4.ADDRESS device show cable : ausgegeben. Nützlich für die weitere Verarbeitung in Skripten. |
--pretty -p | Siehe Tabelle 1 |
--terse -t | Siehe Tabelle 1 |
--mode multiline -m multiline | Ein weiteres Ausgabeformat, welches manchmal automatisch aktiviert wird. Anstelle einer gemeinsamen Zeile wird für jede Eigenschaft eine eigene Zeile verwendet. |
Eis gibt ziemlich viele in einer FELDLISTE verwendbare Eigenschaften; welche konkret hängt aber aber ab vom Bereich, dem Kommando, der Schnittstelle und des ggf. daran gebundenen Verbindungsprofils sowie auch von der momentanen betrieblichen Situation. Man kann die zulässigen Namen abfragen mit solchen Befehlen:
nmcli -m multiline -f all connection show | cat
nmcli -m multiline -f all device show eth00 | cat
Statt cat kann man natürlich auch mit grep filtern.
Die Namen der Eigenschaften werden durchgehend in Großbuchstaben geschrieben. Meistens kann man aber auch andere Schreibweisen verwenden.
Bereiche und Kommandos¶
Eine vollständige Liste aller BEREICHe erhält man mit dem Befehl:
nmcli help
Für jeden BEREICH erhält man eine vollständige Liste aller KOMMANDOS mit diesem Befehl:
nmcli BEREICH help
Dieser Artikel beschränkt sich im folgenden auf eine Auswahl praxisrelevanter Beispiele.
nmcli monitor
Man startet diesen Befehl im Terminal[2][3] und wechselt dann in ein zweites Fenster mit einem weiteren Terminal. Wirkungen der im zweiten Terminal ausgeführten Befehle, sofern sie den Verbindungsstatus ändern, werden im ersten Terminal aktuell angezeigt. Man beendet den Monitor im ersten Fenster mit den Tasten Strg + C .
nmcli general
Siehe: Status abfragen
nmcli device
nmcli device status
Siehe: Status abfragen
nmcli device show eth0
nmcli -f common device show eth0
Standardauswahl der Eigenschaften der angegebenen Schnittstelle zeilenweise ausgeben. Wenn die Schnittstelle zu einer aktiven Verbindung gehört, sind das auch IP-Adressen und -Routen.
nmcli device show
Wie vorstehend, jedoch Daten aller bekannten Schnittstellen ausgeben.
nmcli -f general.device,general.nm-managed,general.autoconnect device show
Die mit der Option
-f
benannten Eigenschaften für alle Schnittstellen ausgeben. Konkret wird hier angezeigt, welche Schnittstellen vom NetworkManager überhaupt verwaltet und ggf. auch automatisch aktiviert werden.nmcli device set eth0 managed on
nmcli device set eth0 managed off
Mit diesen Befehlen kann man die Verwaltung durch den NetworkManager für die angegebene Schnittstelle
eth0
ein- und ausschalten.nmcli device set eth0 autoconnect on
nmcli device set eth0 autoconnect off
Automatischen Verbindungsaufbau für die angegebene Schnittstelle
eth0
aktivieren bzw. deaktivieren.nmcli device wifi rescan
Nach WLAN-Netzwerken suchen. Dieser Befehl erzeugt in der Regel keine Ausgabe.
nmcli device wifi list
Alle beim letzten Suchlauf gefundenen WLAN-Netze auflisten.
nmcli device wifi list --rescan yes
Kombination der beiden vorstehenden Befehle.
nmcli device wifi help
Alle Unterkommandos von
wifi
anzeigen.Weitere wichtige Kommandos für den Bereich
device
siehe:Verbindung aufbauen und beenden (
up, down, connect, disconnect
)
Die folgenden Befehle verändern ein Verbindungsprofil, zu Details und Unterschieden siehe: Verbindungsprofil bearbeiten:
nmcli device modify …
nmcli connection modify …
nmcli connection edit …
nmcli connection
Siehe: Status abfragen
nmcli connection show PROFIL
Die Standardauswahl der Eigenschaften des Verbindungsprofils PROFIL zeilenweise anzeigen.
nmcli connection show
Wie vorstehend, jedoch für alle Verbindungsprofile.
Weitere wichtige Kommandos für den Bereich
connection
siehe:Verbindungsprofil pflegen (
add, modify, delete, edit
)Verbindung aufbauen und beenden (
up, down
)
nmcli connection help
Alle Kommandos für den Bereich
connections
anzeigen.
nmcli networking on
nmcli networking off
NetworkManager aufwecken oder einschläfern.
nmcli radio wifi on
nmcli radio wifi off
Die Unterstützung für Funknetzwerke ein- bzw. ausschalten.
Verbindungsprofil pflegen¶
Es gibt permanente (d.h. abgespeicherte) und temporäre (d.h. ad hoc von nmcli
angelegte) Verbindungsprofile. Man kann ein temporäres Verbindungsprofil in ein permanentes umwandeln, indem man irgend etwas, z.B. den Namen ändert und speichert.
Zur Bearbeitung des Verbindungsprofils gibt es vier Möglichkeiten:
Man benutzt ein GUI-Werkzeug.
Permanente Verbindungsprofile werden in ganz normalen Textdateien gespeichert und können von Root wie jede Systemdatei bearbeitet werden. Dazu muss man mit Root-Rechten arbeiten und wissen, wo diese Dateien gespeichert werden und wie sie aufgebaut sind:
Vor Ubuntu 24.04 wurden Verbindungsprofile abgelegt im Ordner /etc/NetworkManager/system-connections/ als INI-Dateien im NetworkManager-Format.
Ab Ubuntu 24.04 werden die Profile von Netplan verwaltet und liegen im Ordner /etc/netplan/ im Format YAML. Außerdem werden sie noch unter /run/NetworkManager/system-connections/ als INI-Dateien im NetworkManager-Format gespiegelt, aber eine Bearbeitung dieser Dateien ist sinnlos, da sie einen Neustart nicht überleben.
Der Wert jeder Eigenschaft eines Verbindungsprofils kann im Terminal verändert werden. Siehe unten.
Das Programm
nmcli
enthält auch einen interaktiven Editor für Verbindungsprofile. → Verbindungsprofil bearbeiten
Verbindungsprofil anlegen¶
Das erfolgt im Terminal mit einem Befehl folgender Grundstruktur:
nmcli connection add type TYPANGABE EIGENSCHAFT-Name-und-Wert …
Beispiel für folgende Erläuterungen:
nmcli connection add type ethernet con-name 91_APIPA
TYPANGABE ist eine verpflichtende Angabe und steht für das Schlüsselwort des gewünschten Typs des Verbindungsprofils, beispielsweise
ethernet
,wifi
odergsm
.EIGENSCHAFT-Name-und-Wert kann fehlen oder beliebig oft verwendet werden. Jede Anwendung erfordert ein Paar aus dem Namen einer Eigenschaft und durch Leerzeichen getrennt dem Wert. Für den Namen kann ein Alias lt. folgender Tabelle genannt werden, sofern ein solches existiert. Im Beispiel wird die Eigenschaft
con-name
mit dem Wert91-APIPA
belegt.
Tabelle 4: Wichtige Eigenschaften von Verbindungsprofilen | ||||
Eigenschaft | Alias | Pflicht | Bedeutung | |
connection.type | type | ja | Der Typ des Verbindungsprofils. Eine vollständige Liste aller unterstützten Typen erhält man durch bewusste Falscheingabe, z.B. nmcli connection add type ? | |
connection.interface-name | ifname | manchmal | Der Name der zu benutzenden oder anzulegenden Schnittstelle ist erforderlich für die Typen bond, team, bridge, vlan .. Das Verbindungsprofil verwendet nur diese Schnittstelle. Wenn man nichts angibt, arbeitet das Profil mit allen Schnittstellen des passenden Typs. | |
connection.id | con-name | nein | Angabe nicht erforderlich, aber empfohlen. Man legt hiermit den Klartextnamen des Profils fest. | |
alle anderen | nein | Es gibt abhängig vom Typ sehr viele mögliche Eigenschaften; man erhält eine Liste, indem man sich eine bestehende Verbindung passenden Typs (hier beispielhaft: 91_APIPA) zeigen lässt: nmcli connection show 91_APIPA |
Der Klartextname einer Verbindung ist keine Pflichtangabe. Wenn man selbst keinen vergibt, erfindet das System einen Standardnamen.
Hinweis:
Es kann gleichzeitig mehrere Verbindungsprofile mit demselben Klartextnamen geben, was in der Praxis regelmäßig zur vollständigen Verwirrung des Bedieners führt. Das System unterscheidet die Verbindungsprofile durch ihre eindeutig vergebenen UUIDs.
Man sollte sich mit eigenen Namen Mühe geben und diese unverwechselbar gestalten. Leerzeichen in diesen Namen sind möglich, werden sich aber irgendwann als unpraktisch erweisen.
Verbindungsprofil bearbeiten¶
Es gibt zwei Möglichkeiten ein Verbindungsprofil dauerhaft zu ändern und eine weitere für temporäre Änderungen:
nmcli device modify eth0 EIGENSCHAFT NEUER-WERT
Dieser Befehl funktioniert nur, wenn der genannten Schnittstelle
eth0
auch ein Verbindungsprofil zugeordnet wurde und ändert dann den Wert der angegebenen EIGENSCHAFT temporär bis zum Abbau der Verbindung; der neue Wert wird nicht im Profil eingetragen.nmcli connection modify PROFIL EIGENSCHAFT NEUER-WERT
Dieser Befehl ändert dagegen den Wert permanent im Profil PROFIL und bei einem aktiven Verbindungsprofil wirkt sich das auch sofort auf die Verbindung aus.
nmcli connection edit PROFIL
startet den halb-grafischen interaktiven Editor für Verbindungsprofile. → NetworkManager/NetworkManager ohne GUI
Verbindungsprofil entfernen¶
Man löscht ein Verbindungsprofil mit einem der folgenden Befehlen:
nmcli connection delete 91_APIPA
nmcli connection delete id 91_APIPA
Diese beiden Befehle sind völlig gleichwertig. Das optionale Schlüsselwort id
gibt an, dass die Selektion des Verbindungsprofils über dessen Namen erfolgt, und das funktioniert, solange diese Namen eindeutig sind.
nmcli connection delete uuid UUID-von-91_APIPA
Diesen Befehl muss man nur anwenden, wenn die Namen der Verbindungsprofile nicht eindeutig sind. Man selektiert dann über die UUID des Profils und muss das mit dem Schlüsselwort uuid
ankündigen.
Man kann sowohl permanente wie temporäre Profile entfernen. Ein temporäres Profil wird jedoch möglicherweise sofort wieder mit demselben Namen, aber neuer UUID automatisch angelegt.
Es gibt keine Sicherheitsabfrage und auch kein "undelete".
Dokumentation¶
Es gibt mehrere Manpages, denen man viel zur Verwendung von nmcli
zur Konfiguration des NetworkManagers[4] entnehmen kann:
nmcli
nm-settings-nmcli
nmcli-examples
NetworkManager
Links¶