【发布时间】:2009-06-08 13:02:18
【问题描述】:
我正在使用 python-dbus 与 HAL 交互,我需要根据设备在 /dev 层次结构中的路径找到设备的 UDI。
所以给定一个路径,比如/dev/sdb,我想得到一个值,比如/org/freedesktop/Hal/devices/usb_device_10。
【问题讨论】:
我正在使用 python-dbus 与 HAL 交互,我需要根据设备在 /dev 层次结构中的路径找到设备的 UDI。
所以给定一个路径,比如/dev/sdb,我想得到一个值,比如/org/freedesktop/Hal/devices/usb_device_10。
【问题讨论】:
纯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")
【讨论】:
我会从 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
【讨论】: