NetworkManager: Set current connection of device as metered

По крайней мере один раз, после Добавить -ing предварительно созданного .vbox в VirtualBox, я обнаружил эту ошибку, потому что ... в Настройки> Сеть - Дополнительно параметр Подключен кабель , по-видимому, не был оставлен отмеченным после того, как был Добавить -ed. Почему? Кто знает. Я бы сказал, что в большинстве случаев это будет из-за правил udev и т.п.

6
14.05.2017, 10:07
2 ответа

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

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

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

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

Показать текущее состояние счетчика

nmcli -f connection.metered connection show $CONNECTION

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

Изменить состояние счетчика

Допустимые состояния: да, нет и неизвестно.неизвестно — это значение по умолчанию, которое будет делать предположения на основе таких вещей, как опция 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: это имеет другое значение (CON-PATH устройства == соединения GENERAL.DBUS-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>
12
27.01.2020, 20:25

Адаптация ответа @TomHale -, чтобы просто получить активное состояние соединения:

CONNECTION_UUID=$(nmcli -t -m multiline -f UUID connection show --active | head -n1 | cut -c 6- )

METERED=$(nmcli -t -m multiline -f connection.metered connection show "$CONNECTION_UUID" | cut -c 20-)

# possible values are "yes", "no", "unknown":
echo "$METERED"
1
27.01.2020, 20:25

Теги

Похожие вопросы