Resmi belgelere göre ( standart arayüzler altında ):
Çeşitli D-Bus uygulamalarında yararlı olabilecek bazı standart arayüzler vardır.
org.freedesktop.DBus.Introspectable
Bu arayüzün bir yöntemi vardır:
org.freedesktop.DBus.Introspectable.Introspect (out STRING xml_data)
Nesneleri
, arabirimleri (sinyaller ve yöntemler ile), nesne yolu ağacında altındaki nesneler ve özellikleri dahil olmak üzere, nesnenin XML açıklamasını Introspect
döndüren nesneler örnekleri uygulayabilir .
İşte size başlamanız gereken çok basit bir örnek. Kullanır xml.etree.ElementTree
ve dbus
:
#!/usr/bin/env python
import dbus
from xml.etree import ElementTree
def rec_intro(bus, service, object_path):
print(object_path)
obj = bus.get_object(service, object_path)
iface = dbus.Interface(obj, 'org.freedesktop.DBus.Introspectable')
xml_string = iface.Introspect()
for child in ElementTree.fromstring(xml_string):
if child.tag == 'node':
if object_path == '/':
object_path = ''
new_path = '/'.join((object_path, child.attrib['name']))
rec_intro(bus, service, new_path)
bus = dbus.SystemBus()
rec_intro(bus, 'org.freedesktop.UPower', '/org/freedesktop/UPower')
org.freedesktop.UPower
Örn. İle başlayan özyineli olarak içgözlem yapar /org/freedesktop/UPower
ve tüm nesne yollarını (düğüm adları) yazdırır:
/org/freedesktop/UPower
/org/freedesktop/UPower/Wakeups
/org/freedesktop/UPower/devices
/org/freedesktop/UPower/devices/DisplayDevice
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/line_power_ADP0
ki bu kullandığınızda elde edeceğiniz şeydir d-feet
(ihtiyacınız olduğu değil):
Elbette, komut satırından nesne yollarını kolayca alabilirsiniz gdbus
:
gdbus introspect --system --dest org.freedesktop.UPower --object-path \
/ org / freedesktop / UPower - söylem | awk '/ ^ * düğüm / {print $ 2}'
/ Org / freedesktop'un / UPower
/ Org / freedesktop'un / UPower / wakeups
/ Org / freedesktop'un / UPower / cihazlar
/ Org / freedesktop'un / UPower / cihazlar / DisplayDevice
/ Org / freedesktop'un / UPower / cihazlar / battery_BAT0
/ Org / freedesktop'un / UPower / cihazlar / line_power_ADP0
Ben sahip olmayan qdbus
yüklü ancak uygun bu sayfayı
qdbus --system org.freedesktop.UPower
benzer bir sonuç vermelidir.