Apakah ada daftar layanan DBus yang tersedia?
Saya menemukan beberapa (seperti yang disediakan oleh NetworkManager, Rhythmbox, Skype, HAL).
Saya ingin tahu apakah saya dapat menemukan daftar layanan / antarmuka yang disediakan agak lengkap.
Apakah ada daftar layanan DBus yang tersedia?
Saya menemukan beberapa (seperti yang disediakan oleh NetworkManager, Rhythmbox, Skype, HAL).
Saya ingin tahu apakah saya dapat menemukan daftar layanan / antarmuka yang disediakan agak lengkap.
Jawaban:
Sidang:
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
Sistem:
dbus-send --system \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
Anda juga dapat menggunakan DFeet jika Anda lebih suka alat GUI.
qdbusviewer
adalah teman baikmu; memungkinkan Anda untuk mengirim pesan D-bus juga:
qdbusviewer: could not exec '/usr/lib/i386-linux-gnu/qt4/bin/qdbusviewer': No such file or directory
d-feet
bekerja mulai hari ini.
d-feet
sebagai jawaban agar lebih terlihat
Cara python adalah cara yang indah.
Layanan sistem:
import dbus
for service in dbus.SystemBus().list_names():
print(service)
Layanan sesi:
import dbus
for service in dbus.SessionBus().list_names():
print(service)
pip install dbus-python
. Paket python-dbus juga tersedia (saya tidak dapat bekerja dalam 2 menit saya mencoba).
gdbus
adalah bagian dari glib2 dan mendukung penyelesaian Bash. Berikut cara menggunakannya (di Fedora):
bash-4.4$ source /usr/share/bash-completion/completions/gdbus
bash-4.4$ gdbus call --system --dest <TAB><TAB>
Ini akan menampilkan semua tujuan yang memungkinkan. Untuk mendapatkan daftar antarmuka yang tersedia, DBus mengekspor org.freedesktop.DBus.ListNames
metode ini. Anda dapat memanggilnya dengan menjalankan:
gdbus call --system --dest org.freedesktop.DBus \
--object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.ListNames
Sayangnya ini menyebabkan output yang tidak dapat dibaca. Untungnya outputnya adalah python yang valid, jadi ini mungkin:
gdbus call --system --dest org.freedesktop.DBus \
--object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.ListNames | \
python -c 'import sys, pprint; pprint.pprint(eval(sys.stdin.read()))'
Saya biasanya tidak melakukan ini, tetapi merupakan trik yang bagus untuk tetap bertahan. Saya gunakan gdbus
untuk mengintrospeksi dan membuktikan konsep sebelum pindah ke kode. Penyelesaian bash menghemat banyak pengetikan dan menghindari kesalahan ketik. Akan menyenangkan untuk gdbus
menampilkan output yang lebih bagus.
dbus-send
ataugdbus
?