Mit dem Dienstprogramm nmcli sind die erforderlichen Schritte:
-
Stellen Sie sicher, dass NetworkManager Version 1.0.6+ ist:
$ nmcli -v nmcli tool, version 1.9.0
-
Überprüfen Sie GENERAL.METERED auf einer Schnittstelle:
$ nmcli -t -f GENERAL.METERED dev show eth1 GENERAL.METERED:unknown
-
Werte sind:
unknown, yes, no, yes (guessed), no (guessed)
-
Das Erzwingen des Werts wird folgendermaßen durchgeführt:
$ nmcli dev modify wlan1 connection.METERED yes Connection successfully reapplied to device 'wlan1' $ nmcli -t -f GENERAL.METERED dev show wlan1 GENERAL.METERED:yes
Und um eine nach Gerät gruppierte Liste zu erhalten:
$ nmcli -t -f GENERAL.DEVICE,GENERAL.METERED dev show
GENERAL.DEVICE:wlan1
GENERAL.METERED:yes
GENERAL.DEVICE:eth1
GENERAL.METERED:unknown
GENERAL.DEVICE:lo
GENERAL.METERED:unknown
Der Versuch, dies auf Informationen nur über die Standardroute zu reduzieren, würde immer noch einen Aufruf eines anderen Befehls erfordern, da NetworkManager nicht versucht, zwischen mehreren Geräten in einem verbundenen Zustand zu unterscheiden:
$ nmcli -t -f GENERAL.DEVICE,GENERAL.METERED dev show `ip route list 0/0 | sed -r 's/.*dev (\S*).*/\1/g'`
Sie können den gemessenen Status der aktuellen Verbindung auch über D-Bus abrufen. Von einer Shell aus können Sie busctl
verwenden :
busctl get-property org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Metered
das ist nur ein Befehl, im Gegensatz zu nmcli
Lösung, und in anderen Programmiersprachen kann es effizienter sein, D-Bus direkt zu verwenden, anstatt nmcli
aufrufen zu müssen .