Con la utilidad nmcli, los pasos necesarios son:
-
verificar NetworkManager es la versión 1.0.6+:
$ nmcli -v nmcli tool, version 1.9.0
-
verifique GENERAL.MEDIIDO en una interfaz:
$ nmcli -t -f GENERAL.METERED dev show eth1 GENERAL.METERED:unknown
-
los valores son:
unknown, yes, no, yes (guessed), no (guessed)
-
Forzar el valor se hace así:
$ nmcli dev modify wlan1 connection.METERED yes Connection successfully reapplied to device 'wlan1' $ nmcli -t -f GENERAL.METERED dev show wlan1 GENERAL.METERED:yes
Y, para obtener una lista agrupada por 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
Intentar reducir esto a información solo sobre la ruta predeterminada aún requeriría una llamada a otro comando, ya que NetworkManager no intenta distinguir entre varios dispositivos en un estado conectado:
$ nmcli -t -f GENERAL.DEVICE,GENERAL.METERED dev show `ip route list 0/0 | sed -r 's/.*dev (\S*).*/\1/g'`
También puede obtener el estado medido de la conexión actual a través de D-Bus. Desde un shell, puede usar busctl
:
busctl get-property org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Metered
que es solo un comando, en contraste con el nmcli
solución, y en otros lenguajes de programación puede ser más eficiente usar D-Bus directamente en lugar de tener que llamar a nmcli
.