Con l'utilità nmcli, i passaggi necessari sono:
-
verificare che NetworkManager sia la versione 1.0.6+:
$ nmcli -v nmcli tool, version 1.9.0
-
controlla GENERAL.METERED su un'interfaccia:
$ nmcli -t -f GENERAL.METERED dev show eth1 GENERAL.METERED:unknown
-
i valori sono:
unknown, yes, no, yes (guessed), no (guessed)
-
La forzatura del valore viene eseguita in questo modo:
$ nmcli dev modify wlan1 connection.METERED yes Connection successfully reapplied to device 'wlan1' $ nmcli -t -f GENERAL.METERED dev show wlan1 GENERAL.METERED:yes
E, per ottenere un elenco raggruppato per dispositivo:
$ 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
Il tentativo di ridurlo alle informazioni solo sulla rotta predefinita richiederebbe comunque una chiamata a un altro comando poiché NetworkManager non tenta di distinguere tra più dispositivi in uno stato connesso:
$ nmcli -t -f GENERAL.DEVICE,GENERAL.METERED dev show `ip route list 0/0 | sed -r 's/.*dev (\S*).*/\1/g'`
È inoltre possibile ottenere lo stato misurato della connessione corrente tramite D-Bus. Da una shell, puoi usare busctl
:
busctl get-property org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Metered
che è solo un comando, in contrasto con il nmcli
soluzione, e in altri linguaggi di programmazione può essere più efficiente usare D-Bus direttamente invece di dover chiamare nmcli
.