如何檢測當前連接是否標記爲在使用NetworkManager的系統上進行計量?檢測當前連接是否使用NetworkManager進行計量
這是來自shell腳本,但我可以通過Python輕鬆調用任何C函數。
如何檢測當前連接是否標記爲在使用NetworkManager的系統上進行計量?檢測當前連接是否使用NetworkManager進行計量
這是來自shell腳本,但我可以通過Python輕鬆調用任何C函數。
隨着nmcli實用程序,必要的步驟是:
驗證網絡管理器是version 1.0.6+:
$ nmcli -v nmcli tool, version 1.9.0
檢查GENERAL.METERED的界面上:
$ nmcli -t -f GENERAL.METERED dev show eth1 GENERAL.METERED:unknown
強制值是這樣完成的:
$ nmcli dev modify wlan1 connection.METERED yes Connection successfully reapplied to device 'wlan1' $ nmcli -t -f GENERAL.METERED dev show wlan1 GENERAL.METERED:yes
而且,爲了獲得由設備分組列表:
$ nmcli -t -f GENERAL.DEVICE,GENERAL.METERED dev show
GENERAL.DEVICE:wlan1
GENERAL.METERED:yes
GENERAL.DEVICE:eth1
GENERAL.METERED:unknown
GENERAL.DEVICE:lo
GENERAL.METERED:unknown
試圖削減這隻需要默認路由的信息將仍然需要a call to another command作爲NetworkManager不試圖區分處於連接狀態的多個設備:
$ nmcli -t -f GENERAL.DEVICE,GENERAL.METERED dev show `ip route list 0/0 | sed -r 's/.*dev (\S*).*/\1/g'`
非常好!有沒有辦法只顯示第一個默認路由的網絡信息?對於許多VPN和其他虛擬網絡,'nmcli -t -f GENERAL.METERED dev show'的輸出(沒有設備)是我所有可能值的混合體。 – phihag
我已經添加了一種方法來查看設備名稱,但我認爲您可能需要詢問'ip route'並理想'ip monitor'來可靠地跟蹤默認路由或相關服務器的接口,然後執行/重做nmcli查詢。 – lossleader
謝謝!我會在幾個小時內獎勵賞金。 – phihag