NetworkManager: установить текущее соединение устройства как измеренное

С NetworkManager, как установить подключенное в данный момент соединение на моем устройстве (скажем, wlp2s0 ), как wlp2s0 ?

Как я могу отключить его таким образом, чтобы догадываться о измеренном / незапущенном состоянии все равно будет?

Примечание. Некоторые горячие точки будут измеряться (например, мой телефон), а некоторые не будут (например, дома), поэтому установка этого устройства не является тем, что мне нужно.

Я действительно надеюсь, что это не лучший ответ: он кажется запутанным в простом случае, и тем более, если разрешить двоичный SSID. В любом случае, здесь идет:

Получить текущее соединение устройства

 nmcli -t -f GENERAL.CONNECTION --mode tabular device show $DEVICE | tail -n1 

-t требуется, поскольку в конце есть пространство, добавленное в конец (!?).

Показывать текущий измеренный статус

 nmcli -f connection.metered connection show $CONNECTION 

Где $CONNECTION – это строка, возвращаемая предыдущей командой.

Изменить измеренный статус

Допустимыми статусами являются yes , no и unknown . unknown – это значение по умолчанию, которое будет делать догадки на основе таких параметров, как параметр DHCP ANDROID_METERED (ссылка) .

Пример: установить $ CONNECTION для измерения:

 nmcli connection modify $CONNECTION connection.metered yes 

Разрешение двоичных SSID

Чтобы сделать это «правильно» (учитывая 32 произвольных октета в SSID), вам необходимо использовать GENERAL.CON-PATH :

 nmcli -t -f GENERAL.CON-PATH --mode tabular device show DEVICE | tail -n1 

Это вернет строку, например: /org/freedesktop/NetworkManager/ActiveConnection/39

Затем используйте этот путь для получения соединения GENERAL.CON-PATH . NB: это имеет другое значение ( GENERAL.DBUS-PATH соединения CON-PATH ==)

 nmcli -t -f GENERAL.CON-PATH -m tabular connection show apath /org/freedesktop/NetworkManager/ActiveConnection/39 

Это вернет строку, например: /org/freedesktop/NetworkManager/Settings/5 (не заметите ActiveConnection ). Это может быть использовано для изменения соединения:

 nmcli connection modify /org/freedesktop/NetworkManager/Settings/<NUMBER> connection.metered <VALUE>