我使用Python接口到NetworkManager来配置Linux中的网络连接。我可以添加连接,但在设置有线连接的硬件(MAC)地址时遇到错误。此代码说明了问题:
#!/usr/bin/python3
from gi.repository import NetworkManager
s_wired = NetworkManager.SettingWired.new()
addr = '00:32:12:34:56:11'
mac_bytes = NetworkManager.utils_hwaddr_atoba(addr, 1)
s_wired.set_property(NetworkManager.SETTING_WIRED_MAC_ADDRESS, mac_bytes)
# ^^^ TypeError: could not convert 'b'\x002\x124V\x11'' to
# type 'GArray_guchar_' when setting property 'NMSettingWired.mac-address'
NetworkManager API是用C语言实现的,并且使用GLib,所以据我所知,Python和GLib或GObject系统之间的类型转换是有问题的。以下是一些版本和类型信息:
^{pr2}$因为'mac_bytes'(它是一个字节数组)与我能得到的无符号字符数组非常接近,所以我认为类型转换系统应该没有问题。我在Python中使用GLib和GObject自省,因此如果可能的话,我更喜欢GLib解决方案而不是d-Bus解决方案,但是任何有效的解决方案都会有所帮助。此时,我无法升级NetworkManager版本(如上所示)。在
有什么办法解决这个错误吗?在
API引用:https://wiki.gnome.org/Projects/NetworkManager/Developers
目前没有回答
相关问题 更多 >
编程相关推荐