如何检测当前连接是否标记为在使用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