Estoy tratando de obtener una lista de los dispositivos USB actualmente conectados en Ubuntu 10.10 y monitorear los cambios que ocurren, como los dispositivos que se enchufan o desconectan usando UDev y D-BUS. Soy bastante nuevo en la programación usando D-BUS. Vi un ejemplo: Linux : How to detect is usb keyboard is plugged and unplugged solo que uno usa HAL y sé que HAL está en desuso. Encontré un código de trabajo, lo modifiqué un poco, solo que no funciona para ningún dispositivo que solo tenga dispositivos de almacenamiento como memorias USB, reproductores de medios o dispositivos de CD-ROM. Quiero que todo el mouse, el teclado, el cargador de la cámara USB conecte cualquier cosa que esté conectada al USB. Quiero que mi programa lo sepa. Esto es básicamente lo que tengo (http://moserei.de/2010/01/08/accessing-devicekit-with-dbus-and-python.html):Dispositivos USB UDev y D-BUS
import dbus
import gobject
from dbus.mainloop.glib import DBusGMainLoop
def device_added_callback(device):
print 'Device %s was added' % (device)
def device_changed_callback(device):
print 'Device %s was changed' % (device)
#must be done before connecting to DBus
DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
proxy = bus.get_object("org.freedesktop.UDisks",
"/org/freedesktop/UDisks")
iface = dbus.Interface(proxy, "org.freedesktop.UDisks.Device")
devices = iface.get_dbus_method('EnumerateDevices')()
print '%s' % (devices)
#addes two signal listeners
iface.connect_to_signal('DeviceAdded', device_added_callback)
iface.connect_to_signal('DeviceChanged', device_changed_callback)
#start the main loop
mainloop = gobject.MainLoop()
mainloop.run()
Cualquier ayuda sería muy apreciada. Gracias de antemano, Calota Romeo
Para la referencia futura (Estaba buscando exactamente este código, no un controlador usb genérico), necesita cambiar: iface = dbus.Interface (proxy, "org.freedesktop.UDisks.Device") a iface = dbus.Interface (proxy, "org.freedesktop.UDisks") al menos cuando se usa udisks 1.0.4. –