dbus_next.errors.DBusError:ipv4.addresses:对于“ method = manual”,此属性不能为空

问题描述

我正在尝试使用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 ('aa{sv}',[{'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 ('aa{sv}','routes': <dbus_next.signature.Variant ('aau',[])>},

...如您所见,ipv4.addresses字段显然不是空的。因此,我不知道错误为何如此。

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

解决方法

如果未更新连接,则抛出此错误。 addresses成员已弃用。我删除了它,并能够更新连接。这是ipv4块的工作示例:

 'ipv4': {'address-data': <dbus_next.signature.Variant ('aa{sv}',[{'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 ('aa{sv}','routes': <dbus_next.signature.Variant ('aau',[])>},

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...