2009-06-08 13 views

Antwort

3

reine Python-Lösung:

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 für mich zu lehren, wie dbus verwenden :) – NicDumZ

+0

Entspricht nicht das für mich nicht funktionieren Fehler: DBusException: org.freedesktop.DBus.Error.AccessDenied: Abgelehnte Nachricht senden, 1 übereinstimmende Regeln; type = "method_call", sender = ": 1.74" (uid = 1000 pid = 3181 comm = "python/usr/bin/ipython") schnittstelle = "org.freedesktop.Hal.Manager" member = "FindDeviceStringMatch" error name = "(unset)" requested_reply = "0" Ziel = ": 1.77" (uid = 0 pid = 4111 comm = "/ usr/sbin/hald") Wahrscheinlich, weil ich nicht die Wurzel bin. –

1

Ich würde laichen einen hal-find-by-property Anruf von 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 
Verwandte Themen