Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 检测是否使用NetworkManager测量当前连接_Linux_Shell_Networkmanager - Fatal编程技术网

Linux 检测是否使用NetworkManager测量当前连接

Linux 检测是否使用NetworkManager测量当前连接,linux,shell,networkmanager,Linux,Shell,Networkmanager,在使用NetworkManager的系统上,如何检测当前连接是否标记为已计量 这是一个shell脚本,但我可以通过Python轻松调用任何C函数。使用nmcli实用程序,必要的步骤包括: 验证NetworkManager是否为: $nmcli-v nmcli工具,版本1.9.0 检查接口上的GENERAL.METERED: $nmcli-t-f GENERAL.METERED dev show eth1 常规。计量:未知 强制值的操作如下所示: $nmcli dev modify wlan1

在使用NetworkManager的系统上,如何检测当前连接是否标记为已计量


这是一个shell脚本,但我可以通过Python轻松调用任何C函数。

使用nmcli实用程序,必要的步骤包括:

  • 验证NetworkManager是否为:

    $nmcli-v
    nmcli工具,版本1.9.0

  • 检查接口上的GENERAL.METERED:

    $nmcli-t-f GENERAL.METERED dev show eth1
    常规。计量:未知

  • 强制值的操作如下所示:

    $nmcli dev modify wlan1 connection.METERED是
    连接已成功重新应用于设备“wlan1”
    $nmcli-t-f常规。计量开发显示wlan1
    常规。计量:是

  • 要获得按设备分组的列表,请执行以下操作:

      $ 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
    
    由于NetworkManager不尝试区分处于连接状态的多个设备,因此尝试将此信息缩减为仅关于默认路由的信息仍然需要:

      $ nmcli -t -f GENERAL.DEVICE,GENERAL.METERED dev show `ip route list 0/0 | sed -r 's/.*dev (\S*).*/\1/g'`
    

    您还可以通过D-Bus获取当前连接的计量状态。在shell中,您可以使用
    busctl

    busctl get-property org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Metered
    

    这只是一个命令,与
    nmcli
    解决方案相比,在其他编程语言中,直接使用D-Bus而不必调用
    nmcli

    非常好!有没有办法只显示第一条默认路由所经过的网络的信息?对于许多VPN和其他虚拟网络,
    nmcli-t-f GENERAL.METERED dev show
    (没有设备)的输出对我来说是所有可能值的混合。我添加了一种查看设备名称的方法,但我认为您可能需要询问
    ip路由
    和理想情况下的
    ip监视器
    ,以可靠地跟踪默认路由或相关服务器的接口,然后执行/重做nmcli查询。谢谢!我将在几个小时内颁发奖金。另请参阅,其中描述了如何设置连接(即SSID)而不是接口。当您可能有多个wifi连接,其中一个连接到移动热点时,这是有意义的。您可以使用
    [”$(nmcli-t-f GENERAL.METERED dev show`ip路由列表0/0 | sed-r's/*dev(\s*)./\1/g'`cut-d':'-f2)==yes*]
    测试输出结果是一个具有以下内容的枚举