根据/ dev节点路径查找HAL对象

时间:2009-06-08 13:02:19

标签: python dbus hal

我正在使用python-dbus与HAL连接,我需要根据/dev层次结构中的路径找到设备的UDI。

因此,如果给出/dev/sdb之类的路径,我希望得到一个像/org/freedesktop/Hal/devices/usb_device_10一样的值。

2 个答案:

答案 0 :(得分:3)

Pure python解决方案:

import dbus
bus = dbus.SystemBus()
obj = bus.get_object("org.freedesktop.Hal", "/org/freedesktop/Hal/Manager")
iface = dbus.Interface(obj, "org.freedesktop.Hal.Manager")
print iface.FindDeviceStringMatch("block.device", "/dev/sda")

答案 1 :(得分:1)

我会从Python产生hal-find-by-property调用:

import subprocess
def get_UDI(path):
    cmd = 'hal-find-by-property --key block.device --string %s' % path
    proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
    output = proc.communicate()
    # stdout
    return output[0].strip()

print get_UDI('/dev/sdb') # /org/freedesktop/Hal/devices/xxxxxx