답변:
세션:
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
체계:
dbus-send --system \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
GUI 도구를 선호하는 경우 DFeet 을 사용할 수도 있습니다 .
qdbusviewer
당신의 가장 친한 친구입니다; D-bus 메시지도 보낼 수 있습니다 :
qdbusviewer: could not exec '/usr/lib/i386-linux-gnu/qt4/bin/qdbusviewer': No such file or directory
d-feet
는 오늘 부터 작동합니다.
d-feet
보다 눈에 띄게하기 위해 답변으로 추가하십시오
파이썬 방식은 아름다운 방식입니다.
시스템 서비스 :
import dbus
for service in dbus.SystemBus().list_names():
print(service)
세션 서비스 :
import dbus
for service in dbus.SessionBus().list_names():
print(service)
pip install dbus-python
있습니다. python-dbus 패키지도 사용할 수 있습니다 (내가 시도한 2 분 동안 일할 수 없었습니다).
gdbus
glib2의 일부이며 Bash 완료를 지원합니다. Fedora에서 사용하는 방법은 다음과 같습니다.
bash-4.4$ source /usr/share/bash-completion/completions/gdbus
bash-4.4$ gdbus call --system --dest <TAB><TAB>
가능한 모든 목적지가 표시됩니다. 사용 가능한 인터페이스 목록을 얻으려면 DBus가 org.freedesktop.DBus.ListNames
메소드를 내 보냅니다 . 다음을 실행하여 호출 할 수 있습니다.
gdbus call --system --dest org.freedesktop.DBus \
--object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.ListNames
불행하게도 이것은 읽을 수없는 출력으로 이어집니다. 다행히도 출력은 유효한 파이썬이므로 가능합니다.
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()))'
나는 보통 이것을하지 않지만 소매를 유지하는 좋은 트릭입니다. 내가 사용 gdbus
introspecting 코드로 이동하기 전에 개념을 증명합니다. bash 완성은 많은 타이핑을 줄이고 오타를 피합니다. gdbus
더 좋은 출력 을 표시하는 것이 좋을 것입니다.
dbus-send
또는 로 서비스가있는 서비스의 모든 객체 경로를 나열하는 방법은gdbus
무엇입니까?