Я использую python-dbus для взаимодействия с HAL, и мне нужно найти UDI устройства на основе его пути в иерархии /dev.
python-dbus
/dev
Итак, учитывая путь, такой как /dev/sdb, я хочу получить значение обратно как /org/freedesktop/Hal/devices/usb_device_10.
/dev/sdb
/org/freedesktop/Hal/devices/usb_device_10
Pure Python Solution:
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")
Я бы вызвал hal-find-by-property звонок из 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