dbus_next.errors.DBusError: ipv4.addresses: 'method=manual' 的这个属性不能为空

Posted

技术标签:

【中文标题】dbus_next.errors.DBusError: ipv4.addresses: \'method=manual\' 的这个属性不能为空【英文标题】:dbus_next.errors.DBusError: ipv4.addresses: this property cannot be empty for 'method=manual'dbus_next.errors.DBusError: ipv4.addresses: 'method=manual' 的这个属性不能为空 【发布时间】:2021-01-27 06:37:31 【问题描述】:

我正在尝试使用 dbus 配置 NetworkManager 连接 (wifi)。我正在使用 Python dbus-next,因为这个库在异步支持方面很方便。我发现“地址数据”字段将来会取代“地址”。但是,无论我更新的是什么 IPv4 设置,它总是说:

dbus_next.errors.DBusError: ipv4.addresses: 'method=manual' 的这个属性不能为空

而且我想不出我可能做错了什么。尚不清楚为什么不接受以下设置。我还将这些设置与我使用 gnome 的 networkmanager 配置的设置进行了比较,后者也在后台使用 dbus。因此,必须有一种方法,但我不知道如何进行。

这些是我正在更新的 IPv4 设置:

 'ipv4': 'address-data': <dbus_next.signature.Variant ('aasv', ['address': <dbus_next.signature.Variant ('s', 192.168.2.177)>, 'prefix': <dbus_next.signature.Variant ('u', 16)>])>,
          'addresses': <dbus_next.signature.Variant ('aau', [[3232236209, 4294966784, 3232236033]])>,
          'dns': <dbus_next.signature.Variant ('au', [])>,
          'dns-search': <dbus_next.signature.Variant ('as', [])>,
          'gateway': <dbus_next.signature.Variant ('s', )>,
          'method': <dbus_next.signature.Variant ('s', manual)>,
          'route-data': <dbus_next.signature.Variant ('aasv', [])>,
          'routes': <dbus_next.signature.Variant ('aau', [])>,

...如您所见,字段 ipv4.addresses 显然不是空的。因此,我不知道为什么错误会这样说。

我还在已建立的连接上测试了网络管理器reapply 方法,结果相同。

【问题讨论】:

【参考方案1】:

如果没有更新连接,则会引发此错误。 addresses 成员已弃用。我删除了它并能够更新连接。这是ipv4 块的一个工作示例:

 'ipv4': 'address-data': <dbus_next.signature.Variant ('aasv', ['address': <dbus_next.signature.Variant ('s', 192.168.2.181)>, 'prefix': <dbus_next.signature.Variant ('u', 24)>])>,
          'dns': <dbus_next.signature.Variant ('au', [])>,
          'dns-search': <dbus_next.signature.Variant ('as', [])>,
          'gateway': <dbus_next.signature.Variant ('s', 192.168.2.1)>,
          'method': <dbus_next.signature.Variant ('s', manual)>,
          'route-data': <dbus_next.signature.Variant ('aasv', [])>,
          'routes': <dbus_next.signature.Variant ('aau', [])>,

之后我成功调用了reapply_connection 方法。如果设备未处于活动状态,此方法调用将引发另一个异常,但这是另一回事。

【讨论】:

以上是关于dbus_next.errors.DBusError: ipv4.addresses: 'method=manual' 的这个属性不能为空的主要内容,如果未能解决你的问题,请参考以下文章