Hab ein kleines Problem mit dbus-python und udisk2 und zwar stimmt irgendwas mit der Kommunikation nicht.
Hatte dazu das kleine Scrip hier gefunden (Siehe unten), was auch klappt bis ich "/dev/sdc" erreichen sollte.
Dann springt das ganze von "block_devices" auf "drives" weshalb auch immer, obwohl klar mit "org.freedesktop.UDisks2.Block" und nicht mit "org.freedesktop.UDisks2.Drive" kommuniziert wird.
Man beachte die "print k" Ausgabe.
Kann mir einer klären was zur Hölle da schief läuft?
Code: Alles auswählen
#!/usr/bin/python2.7
# coding: utf-8
import dbus
def get_usb():
devices = []
bus = dbus.SystemBus()
ud_manager_obj = bus.get_object('org.freedesktop.UDisks2', '/org/freedesktop/UDisks2')
om = dbus.Interface(ud_manager_obj, 'org.freedesktop.DBus.ObjectManager')
for k,v in om.GetManagedObjects().iteritems():
print k
drive_info = v.get('org.freedesktop.UDisks2.Block', {})
device = bytearray(drive_info.get('Device')).replace(b'\x00', b'')
devices.append(device)
Code: Alles auswählen
==================== RESTART: /home/pycoder/dbus-test.py ====================
/org/freedesktop/UDisks2/block_devices/sdb1
/org/freedesktop/UDisks2/block_devices/sda
/org/freedesktop/UDisks2/block_devices/sr0
/org/freedesktop/UDisks2/block_devices/sda1
/org/freedesktop/UDisks2/block_devices/sda2
/org/freedesktop/UDisks2/block_devices/sda3
/org/freedesktop/UDisks2/block_devices/sda4
/org/freedesktop/UDisks2/block_devices/sdb3
/org/freedesktop/UDisks2/block_devices/sdb2
/org/freedesktop/UDisks2/drives/Samsung_SSD_840_EVO_1TB_S1D9NSAF720159W
Traceback (most recent call last):
File "/home/pycoder/dbus-test.py", line 52, in <module>
dev = get_usb()
File "/home/pycoder/dbus-test.py", line 14, in get_usb
device = bytearray(drive_info.get('Device')).replace(b'\x00', b'')
TypeError: 'NoneType' object is not iterable