라즈베리 파이를 메시지 서버로! (Telegram CLI)

 

라즈베리 파이에서 특별한 이벤트가 발생할 때 마다 내 폰으로 알려준다면?

왠지 유용해 보이고 가슴설레는 시나리오가 아닐 수 없습니다. 그리고 텔레그램을 이용하면 가능한 시나리오 이기도 합니다. 텔레그램이 Web, PC, Android, iOS 등 다양한 환경에서 사용할 수 있도록 지원하는 것은 잘 알려진 사실입니다. 그런데 이 지원 목록에 Telegram CLI도 있습니다. (아직 비공식 상태이긴 하지만)

텔레그램 CLI를 이용하면 리눅스 환경에서 메시지, 파일을 전송하고 수신한 메시지를 체크하는 등의 작업을 자동화 할 수 있습니다. 집에 설치해 둔 라즈베리 파이에 텔레그램 CLI 를 올리면 폰과 연동되는 강력한 메시지 서버를 갖게되는 겁니다!

 

 

설치 과정

 

콘솔 창을 열어 홈 위치로

  • cd ~

업데이트 먼저 체크하고

  • sudo apt-get update
  • sudo apt-get upgrade

컴파일 및 구동에 필요한 패키지를 설치합니다.

  • sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev make git-core
  • (Ubuntu/Debian OS를 사용하는 경우는 아래 커맨드를 대신 사용하세요.)
  • sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make

소스 다운로드 및 빌드

  • git clone –recursive https://github.com/vysheng/tg.git
  • cd tg
  • ./configure
  • make

시간이 좀 걸립니다. 커피 한 잔 하세요.

주의!!! configure 과정에서 python dev 패키지를 찾을 수 없다고 나오는 경우는 $ sudo apt-get install python-DEV 실행하세요. libjansson-dev 패키지 찾을 수 없다고 나오면 $ sudo apt-get install libjansson-dev 실행하세요.

 

 

테스트

 

텔레그램 CLI 를 실행합니다. (1.2.0 기준)

  • bin/telegram-cli -k tg-server.pub -W
  • >

위와 같이 커서가 뜨면 먼저 자신의 폰 번호(국가코드포함)를 설정해서 폰 인증을 받아야 합니다.

  • > +8210xxxxxxxx

입력하고 한참 대기해보시면 아래와 같이 폰 넘버 입력하라고 뜰겁니다. 그럼 폰 넘버 입력하시고 폰에서 받은 코드를 넣어주면 됩니다.

  • phone number: +82xxxxxxxxxx
  • code (‘call’ for phone call): xxxxx
  • >

현재 열려있는 대화창을 보는 명령어를 입력해서 테스트 해보세요.

  • > dialog_list

 

메시지를 보낼 때는 이름을 이용해서 보냅니다. (이름과 성 사이의 공백을 ‘_’로 대체) 본인한테 메시지를 보내보세요.

  • > msg Yxxxx_Sxx test message

그럼 폰에 설치된 텔레그램에 test_message 라고 뜰겁니다.

주의!! 처음 텔레그램을 설정하고 메시지를 보내보면 메시지 전송이 안되는 현상이 생기곤 했습니다. 그런데 한참 후에 다시 접속해서 메시지를 보내보면 정상적으로 전송이 되었습니다. 왜 인지는 모르겠지만 처음 셋업 후에는 메시지 전송에 시간이 걸리는 듯 합니다.

 

폰에 새로 생성된 대화창이 보일겁니다. 이 대화창을 통해 라즈베리 파이와 폰이 서로 메시지를 주고 받을 수 있습니다. 라즈베리 파이가 좀 똑똑해지도록 프로그래밍 해두면 많은 일들이 가능하겠지요.

좀 더 나아가서, 단체 챗 방을 만들어 여기에 메시지가 가도록 해보겠습니다.

먼저 챗 방을 만듭니다. 반드시 2 명 이상의 유저가 포함되어야 생성됩니다. 챗 방 이름은 Pi2 입니다.

  • create_group_chat Pi2 Name1_Fname1 Name2_Fname2

챗 방이 정상적으로 만들어지면 여기로 메시지를 보냅니다.

  • msg Pi2 hello~

 

메시지 전송 테스트가 끝나면 쉘로 빠져 나옵니다.

  • quit

 

이번 과정에서 폰 인증을 받았기 때문에 tg 폴더에 tg-server.pub 파일이 생성되어 있을겁니다. 다음부터는 이 파일을 이용해서 접속하면 됩니다. (굳이 아래처럼 안하고 앞선 방법으로 해도 똑같이 되는듯…)

  • bin/telegram-cli -k tg-server.pub -W

 

 

메시지 전송 자동화를 위한 스크립트 만들기

 

메시지 수신, 전송을 자동화 하기 위해서 Lua 스크립트와 파이썬 스크립트를 사용할 수 있습니다. 라즈베리 파이에 파이썬은 이미 설치되어 있을겁니다. 그러니 Lua 만 설치.

  • $ sudo apt-get install lua5.2
  • $ sudo apt-get install lua-lgi gir1.2-pango-1.0

 

텔레그램이 설치된 tg 폴더에 보시면 test.lua 라는 스크립트 파일이 있습니다. 가장 기본적인 텔레그램 스크립트 사용방법이 여기에 들어 있습니다. 그러므로 이 파일을 적당히 수정해줍니다. 그리고 아래 명령으로 텔레그램을 실행해보세요.

  • bin/telegram-cli -k tg-server.pub -W -s test.lua

그럼 텔레그램 쉘(>) 대신에 test.lua 스크립트가 실행됩니다. 원하는 작업 내용을 스크립트로 만들어두고 백그라운드로 돌려두면 텔레그램 메시지를 제어할 수 있습니다.

주의!!! 여기서 test.lua 스크립트가 제대로 실행되지 않고 에러를 발생하는 경우가 있습니다. 이럴때는 아래 패키지를 인스톨하고 다시 실행해 보세요.

  • sudo apt-get install lua-lgi libnotify-dev

 

더 상세한 내용은 아래 링크 참고하세요.

텔레그램으로 서버 모니터링하기

 

텔레그램 CLI 기능을 자주 활용하고 싶으시다면 데몬 실행 및 서비스 등록을 하는 것이 좋습니다. 아래 링크에 방법이 자세하게 소개되어 있습니다.

텔레그램 CLI 데몬 실행 및 서비스 등록하기

 

 

 

참고자료

 

 

You may also like...