USB设备使用udev和D-Bus进行更改

我正在尝试获取Ubuntu 10.10中当前插入的USB设备的列表,并监视发生的更改,例如使用udev和D-Bus插入或拔出的设备。

我是使用D-Bus进行编程的新手。 我看到一个例子:“ Linux:如何检测usb键盘是否插入和拔出 ”。 问题是它使用HAL,我知道HAL已被弃用。

我发现了一些工作代码,但它只适用于USB记忆棒,媒体播放器或CD-ROM驱动器等存储设备。 我想要的东西:鼠标,键盘,USB摄像头,充电器; 任何插入USB的东西。

如何监听任何USB设备插头和拔出插头的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() 

我对DBus或udev没有多少经验,但pyudev看起来很有前途。