Найдите объект HAL на основе пути к узлу /dev.

StackOverflow https://stackoverflow.com/questions/964801

  •  12-09-2019
  •  | 
  •  

Вопрос

я использую python-dbus для взаимодействия с HAL, и мне нужно найти UDI устройства на основе его пути в /dev иерархия.

Итак, учитывая такой путь, как /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")

Другие советы

я бы породил hal-find-by-property вызов из Python:

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top