You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

dbus-python教程NetworkManager示例运行提示getProperties方法不存在报错

问题解决方案

核心原因

  • 教程示例基于旧版本NetworkManager编写,当前版本已弃用org.freedesktop.NetworkManager.Devices自定义接口,原有的getProperties方法也已被移除
  • 网络设备的DBus对象路径规则已调整,不再使用eth0这类网卡名作为路径后缀,统一使用数字序号
  • 普通用户默认没有NetworkManager相关DBus接口的调用权限,未授权时调用会触发权限拒绝错误

修复方法

1. 接口替换

当前DBus服务统一使用org.freedesktop.DBus.Properties标准接口读取对象属性,无需使用服务自定义的属性读取方法。

2. 权限处理

测试阶段可以直接用sudo运行Python脚本验证功能,正式使用时可配置polkit规则对指定用户开放对应接口的访问权限。

可运行示例代码

import dbus
bus = dbus.SystemBus()
# 路径中的数字1对应网卡的序号,可根据实际情况替换
dev_obj = bus.get_object(
    'org.freedesktop.NetworkManager',
    '/org/freedesktop/NetworkManager/Devices/1'
)
# 初始化标准属性接口
props_interface = dbus.Interface(
    dev_obj,
    dbus_interface='org.freedesktop.DBus.Properties'
)
# 读取NetworkManager设备接口的所有属性
dev_props = props_interface.GetAll('org.freedesktop.NetworkManager.Device')
# 输出属性验证
print(dev_props)

如果需要读取单个指定属性,可使用如下写法:

# 读取网卡接口名
interface_name = props_interface.Get(
    'org.freedesktop.NetworkManager.Device',
    'Interface'
)
print(interface_name)

内容的提问来源于stack exchange,提问作者Daemon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 03:45:03