한국어
파이썬
 

우분투 리눅스 환경에서 특정 서비스를 제공하는 데몬과 D-Bus 통신하여 데몬 서비스를 이용해보고자 한다.

서비스를 제공하는 측의 구현 방법은 포럼의 Linux를 참고 하면된다.

 

개발 환경은 Ubuntu 16.04 이고 Python2.7 이다.

 

기본적으로 왠만한 리눅스 배포판에는 파이썬이 설치되어 있으며 파이썬 버전을 확인하는 방법은 터미널에서 아래의 명령을 통해 확인 할 수 있다.

$ python --version

Python 2.7.12

 
먼저 pydbus 패키지를 설치해야 하는데 아래 주소를 방문해서 패키지를 다운로드받는다.
https://pypi.python.org/pypi/pydbus#downloads
 
압축 풀기 및 패키지 설치
$ tar xvf pydbus-0.6.0.tar.gz

$ 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 

 

다음 그림과 같은 출력 결과를 볼 수 있다.

makersweb.net_world!!.png

 

아래는 이 예제를 대략적인 그림으로 나타낸 것이다.

dbus.png

 

다음에 기회가 된다면 서비스 데몬으로부터 비동기로 메시지를 받아 처리하는 방법을 소개하겠다.

 

pydbus바인딩의 더 많은 활용 법은 아래사이트를 참고하면 된다.

https://github.com/LEW21/pydbus/blob/master/doc/tutorial.rst