wlp2s0
NetworkManager를 사용하여 측정할 장치(예: )에 현재 연결된 연결을 어떻게 설정합니까 ?
측정/측정되지 않은 상태가 여전히 추측되도록 설정을 해제하려면 어떻게 해야 합니까?
참고: 일부 핫스팟은 측정되며(예: 내 휴대폰) 일부는 측정되지 않습니다(예: 집). 따라서 장치에 이 기능을 설정하는 것은 내가 원하는 것이 아닙니다.
답변1
이것이 최선의 대답이 아니기를 진심으로 바랍니다. 간단한 경우에는 복잡해 보이고 바이너리 SSID가 허용되는 경우에는 더욱 그렇습니다. 어쨌든, 여기 있습니다:
장치의 현재 연결을 가져옵니다
nmcli -t -f GENERAL.CONNECTION --mode tabular device show $DEVICE | head -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 허용
이 작업을 "올바르게"(SSID에 32개의 임의 옥텟 허용) 수행하려면 다음을 사용해야 합니다.장비의 GENERAL.CON-PATH
:
nmcli -t -f GENERAL.CON-PATH --mode tabular device show DEVICE | tail -n1
그러면 다음과 유사한 문자열이 반환됩니다./org/freedesktop/NetworkManager/ActiveConnection/39
그런 다음 이 경로를 사용하여연결하다의 GENERAL.CON-PATH
.알아채다:하나 있다다른값 (장치 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>
답변2
@TomHale-s의 답변을 바탕으로 수정되었습니다.긍정적인연결 상태:
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"