GNU/Linux >> Linux の 問題 >  >> Linux

現在の接続が NetworkManager で計測されているかどうかを検出する

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 を直接使用する方が効率的です。 .


    Linux
    1. SSL / TLS暗号化接続でVSFTPDを構成する方法は?

    2. Python と Xorg で現在のウィンドウ タイトルを取得する

    3. C++ / C++11 を使用して現在の時刻 (ミリ秒単位) を出力する方法

    1. LinuxでNetworkManagerを使い始める

    2. sudo権限で現在のシェルでシェルスクリプトを実行する

    3. <pid> を持つプロセスの現在の umask

    1. Netcatを使用したネットワークサービスのテスト

    2. Ubuntu 18.04 で Apache との SSL 接続を保護する方法

    3. CentOS/RHEL 7 で NetworkManager を使用してカスタム インターフェイス名を設定する方法