NetworkManagerなしで現在の接続が測定されているかどうかを検出します。

NetworkManagerなしで現在の接続が測定されているかどうかを検出します。

私は他の開発者と協力して、Linuxシステムがデータ通信接続に接続しないたびに自動的に更新するスクリプトを作成しました。

しかし、一部のシステムでは、ネットワーク管理者の代わりに「systemd-networkd」を使用してネットワークを構成し、両方のプログラムを同時に使用すると互いに競合することがわかりました。

そのため、システムにインストールされているnmcliに実際に依存することはできず、このソリューションを使用することはできません。質問

答え1

これを自動的に検出する信頼できる単一の方法はありません。ネットワークが計量されていることを示唆する方法がありますが、これらの方法は普遍的に配布されるものとは離れています。

ただし、これらのメッセージが表示されない場合は、接続が測定されない場合もそうでない場合もあるとは考えられません。 NetworkManagerを使用すると、ユーザーは接続状態について最もよく理解できるため、接続を構成するときに測定接続プロパティを設定できます。

したがって、ユーザーにスクリプト実行の選択/責任を付与または無効にすることができます。

答え2

@telcoMが言ったように、接続が測定されていることを確認するための明確な方法はありません。別のオプションは、既知の接続とそれを測定するかどうかについてテーブルを作成することです。比較的良い指標は、次のコマンドを使用して確認できる外部IPアドレスです。

dig +short myip.opendns.com @resolver1.opendns.com

答え3

私たちが見つけた唯一のソリューションは、まだネットワーク管理者が必要です。

nmcli --terse --fields GENERAL.METERED dev show 2>/dev/null | grep --quiet "yes"

関連情報