2009-06-08 53 views
2

我使用python-dbus與HAL進行接口連接,我需要根據/dev層次結構中的路徑找到設備的UDI。基於/ dev節點路徑查找HAL對象

因此給定一個路徑,例如/dev/sdb,我想要得到一個像/org/freedesktop/Hal/devices/usb_device_10的值。

回答

3

純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") 
+0

+1教我如何使用DBUS :) – NicDumZ 2009-06-08 14:21:25

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