nmcli ユーティリティで必要な手順は次のとおりです。
<オール>NetworkManager がバージョン 1.0.6+ であることを確認してください:
$ nmcli -v
nmcli tool, version 1.9.0
インターフェイスの GENERAL.METRED を確認してください:
$ nmcli -t -f GENERAL.METERED dev show eth1
GENERAL.METERED:unknown
値は次のとおりです:unknown, yes, no, yes (guessed), no (guessed)
値の強制は次のように行われます:
$ nmcli dev modify wlan1 connection.METERED yes
Connection successfully reapplied to device 'wlan1'
$ nmcli -t -f GENERAL.METERED dev show wlan1
GENERAL.METERED:yes
そして、デバイスごとにグループ化されたリストを取得するには:
$ 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
NetworkManager は接続状態にある複数のデバイスを区別しようとしないため、これをデフォルト ルートだけの情報に切り詰めようとしても、別のコマンドを呼び出す必要があります。
$ nmcli -t -f GENERAL.DEVICE,GENERAL.METERED dev show `ip route list 0/0 | sed -r 's/.*dev (\S*).*/\1/g'`
D-Bus 経由で現在の接続の計測ステータスを取得することもできます。シェルから busctl
を使用できます :
busctl get-property org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Metered
nmcli
とは対照的に、これは 1 つのコマンドにすぎません。 ソリューションであり、他のプログラミング言語では nmcli
を呼び出す代わりに D-Bus を直接使用する方が効率的です。 .