Respuestas:
Sesión:
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
Sistema:
dbus-send --system \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
También puede usar DFeet si prefiere una herramienta GUI.
qdbusviewer
es tu mejor amigo; también le permite enviar mensajes D-bus:
qdbusviewer: could not exec '/usr/lib/i386-linux-gnu/qt4/bin/qdbusviewer': No such file or directory
d-feet
funciona a partir de hoy.
d-feet
como respuesta para hacerlo más visible
La forma de pitón es la forma hermosa.
Servicios del sistema:
import dbus
for service in dbus.SystemBus().list_names():
print(service)
Servicios de sesión:
import dbus
for service in dbus.SessionBus().list_names():
print(service)
pip install dbus-python
. El paquete python-dbus también está disponible (no pude trabajar en los 2 minutos que probé).
gdbus
es parte de glib2 y admite terminaciones de Bash. Aquí está cómo usarlo (en Fedora):
bash-4.4$ source /usr/share/bash-completion/completions/gdbus
bash-4.4$ gdbus call --system --dest <TAB><TAB>
Esto mostrará todos los destinos posibles. Para obtener una lista de las interfaces disponibles, DBus exporta el org.freedesktop.DBus.ListNames
método. Puedes llamarlo ejecutando:
gdbus call --system --dest org.freedesktop.DBus \
--object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.ListNames
Desafortunadamente, esto conduce a resultados ilegibles. Afortunadamente, el resultado es Python válido, por lo que esto es posible:
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()))'
Normalmente no hago esto, pero es un buen truco para mantener en la manga. Lo uso gdbus
para introspectar y probar conceptos antes de pasar al código. La finalización de bash ahorra mucho tipeo y evita errores tipográficos. Sería bueno tener gdbus
una salida más agradable.
dbus-send
ogdbus
?