Networkmanager
NetworkManager:將設備的目前連接設置為計量
使用 NetworkManager,如何將我的設備(例如
wlp2s0
)上目前連接的連接設置為按流量計費?我如何取消設置它以使對計量/未計量狀態的猜測仍然會發生?
注意:有些熱點會被計量(例如我的手機)而有些不會(例如家庭),所以在設備上設置它不是我想要的。
我真的希望這不是最好的答案:在簡單的情況下似乎很複雜,如果允許二進制 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 optionANDROID_METERED
(reference)之類的內容進行猜測。範例:將 $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
注意 noActiveConnection
)。然後可以使用它來修改連接:nmcli connection modify /org/freedesktop/NetworkManager/Settings/<NUMBER> connection.metered <VALUE>