অফিসিয়াল ডক্স অনুসারে ( স্ট্যান্ডার্ড ইন্টারফেসের অধীনে ):
কিছু স্ট্যান্ডার্ড ইন্টারফেস রয়েছে যা বিভিন্ন ডি-বাস অ্যাপ্লিকেশন জুড়ে কার্যকর হতে পারে।
org.freedesktop.DBus.Introspectable
এই ইন্টারফেসের একটি পদ্ধতি রয়েছে:
org.freedesktop.DBus.Introspectable.Introspect (out STRING xml_data)
অবজেক্টস উদাহরণগুলি কার্যকর করতে পারে Introspect
যা
তার ইন্টারফেস সহ (সিগন্যাল এবং পদ্ধতি সহ) অবজেক্টের একটি এক্সএমএল বিবরণ, অবজেক্ট পাথ ট্রি এবং এর বৈশিষ্ট্যগুলির নীচে বস্তুগুলি সরবরাহ করে।
সুতরাং এখানে একটি খুব সরল উদাহরণ যা আপনাকে শুরু করা উচিত। এটি ব্যবহার করে xml.etree.ElementTree
এবং 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
উদাহরণস্বরূপ থেকে পুনরাবৃত্তভাবে অন্তর্মুখী হয় /org/freedesktop/UPower
এবং সমস্ত বস্তুর পাথ (নোডের নাম) মুদ্রণ করে:
/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
যা আপনি যদি ব্যবহার করেন d-feet
( তবে এটির প্রয়োজন নেই এমনটিই আপনি পেতে পারেন) যা খুব সুন্দর :
অবশ্যই, আপনি সহজেই কমান্ড লাইনের মাধ্যমে অবজেক্টের পাথগুলি পেতে পারেন যেমন gdbus
:
gdbus ইন্ট্রোস্পেক্ট - সিস্টেমে - সর্বশেষ org.freedesktop.UP পাওয়ার - অবজেক্ট-পাথ
/ org / ফ্রিডেস্কটপ / ইউপি পাওয়ার --recurse | awk '/ ^ * নোড / {2} প্রিন্ট করুন
/ সংস্থা / freedesktop / UPower
/ সংস্থা / freedesktop / UPower / Wakeups
/ সংস্থা / freedesktop / UPower / ডিভাইস
/ সংস্থা / freedesktop / UPower / ডিভাইস / DisplayDevice
/ সংস্থা / freedesktop / UPower / ডিভাইস / battery_BAT0
/ সংস্থা / freedesktop / UPower / ডিভাইস / line_power_ADP0
আমি qdbus
ইনস্টল করা হয়নি তবে এই পৃষ্ঠা অনুসারে
qdbus --system org.freedesktop.UPower
একই ফলাফল তৈরি করা উচিত।