우분투 리눅스 환경에서 특정 서비스를 제공하는 데몬과 D-Bus 통신하여 데몬 서비스를 이용해보고자 한다.
서비스를 제공하는 측의 구현 방법은 포럼의 Linux를 참고 하면된다.
개발 환경은 Ubuntu 16.04 이고 Python2.7 이다.
기본적으로 왠만한 리눅스 배포판에는 파이썬이 설치되어 있으며 파이썬 버전을 확인하는 방법은 터미널에서 아래의 명령을 통해 확인 할 수 있다.
$ python --version
Python 2.7.12
$ cd pydbus-0.6.0
$ sudo python setup.py install
혹시 아래와 같은 에러가 나온다면
ImportError: No module named setuptools
python-setuptools 패키지를 설치해준다.
$ sudo apt-get install python-setuptools
아래와 같은 메시지를 확인 하자.
Finished processing dependencies for pydbus==0.6.0
이제 준비 과정이 끝났으니 서비스를 이용하는 클라이언트 예제 소스코드를 작성해보자.
HelloString 예제를 테스트했던 것과 같이 어떤 문자열을 전달하면 서비스측은 "전달한 문자열" + "world!" 하여 반환한다.
client.py
from pydbus import SessionBus bus = SessionBus() interface = bus.get('org.freedesktop.DBus.EchoService','/org/freedesktop/DBus/Examples/Echo') # Get Interface via Bus_Name and Object_Path. demo = interface['org.freedesktop.DBus.EchoDemo'] response = demo.HelloString("https://makersweb.net") # Call Method print(response)
위 파이썬 소스코드를 실행하면
$ python client.py
다음 그림과 같은 출력 결과를 볼 수 있다.
아래는 이 예제를 대략적인 그림으로 나타낸 것이다.
다음에 기회가 된다면 서비스 데몬으로부터 비동기로 메시지를 받아 처리하는 방법을 소개하겠다.
pydbus바인딩의 더 많은 활용 법은 아래사이트를 참고하면 된다.
https://github.com/LEW21/pydbus/blob/master/doc/tutorial.rst