Avec l'utilitaire nmcli, les étapes nécessaires sont :
-
vérifiez que NetworkManager est la version 1.0.6+ :
$ nmcli -v nmcli tool, version 1.9.0
-
vérifier GENERAL.METERED sur une interface :
$ nmcli -t -f GENERAL.METERED dev show eth1 GENERAL.METERED:unknown
-
les valeurs sont :
unknown, yes, no, yes (guessed), no (guessed)
-
Le forçage de la valeur se fait comme ceci :
$ nmcli dev modify wlan1 connection.METERED yes Connection successfully reapplied to device 'wlan1' $ nmcli -t -f GENERAL.METERED dev show wlan1 GENERAL.METERED:yes
Et, pour obtenir une liste regroupée par appareil :
$ 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
Essayer de réduire cela à des informations uniquement sur la route par défaut nécessiterait toujours un appel à une autre commande car NetworkManager n'essaie pas de faire la distinction entre plusieurs appareils dans un état connecté :
$ nmcli -t -f GENERAL.DEVICE,GENERAL.METERED dev show `ip route list 0/0 | sed -r 's/.*dev (\S*).*/\1/g'`
Vous pouvez également obtenir l'état mesuré de la connexion actuelle via D-Bus. Depuis un shell, vous pouvez utiliser busctl
:
busctl get-property org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Metered
qui est une seule commande, contrairement au nmcli
solution, et dans d'autres langages de programmation, il peut être plus efficace d'utiliser D-Bus directement au lieu d'avoir à appeler nmcli
.