http://idchowto.com/?p=4027
지난 시간에 이어 이번 시간에는 Telegram 으로 서버 모니터링 하는 방법에 대해 살펴보도록 하겠습니다.
먼저 갖춰져야할 환경조건은 다음과 같습니다.
< 환경조건 >
– 서버측
1. Telegram-cli 설치
2. lua 스크립트가 가동되어 있어야 함
– 클라이언트측
1. 인증된 Telegram 앱이 설치된 스마트폰
1. hello.lua 스크립트 문
function on_msg_receive (msg)
print(“Name : “, msg.from.print_name) — 메시지 보낸사람 real name (Sunkyu) if ( msg.text == ‘hello’ ) then |
클라이언트로부터 메세지를 수신하면 on_msg_receive 함수가 호출됩니다.
이 함수 내에서 send_msg, send_photo, send_text 등의 함수를 이용해서 메세지를 상대에게 보낼 수 있습니다.
위 스크립트 문에서는 ‘hello’ 를 수신하면, ‘world’ 라는 결과를 보내줍니다.
위와 같이 작성한 다음 telegram-cli 를 이용 lua 스크립트를 호출합니다.
2. telegram-cli 실행해서 위에서 작성한 hello.lua 스크립트 호출
# bin/telegram-cli -s hello.lua
또는 # bin/telegram-cli -s hello.lua -d & 와 같이 데몬 형태로 실행할 수 있다. |
3. 클라이언트에서 hello 메세지를 보낸 후 서버측 상태
User Sunkyu is typing — 클라이언트 (Sunkyu) 에서 메시지를 보내고 있음 > Name : Sunkyu Phone : 8210AAAABBBB Msg Num : 1831 to.Name : Sunkyu — 메시지 수신한 경우 관련 정보 출력시킴 [16:44] Sunkyu >>> hello — 클라이언트에서 보낸 메시지 hello 출력 > Name : Sunkyu Phone : 8210AAAABBBB Msg Num : 1832 to.Name : Sunkyu <<< world — hello 메세지에 대한 응답으로 클라이언트에 world 로 응답함. |
4. 실제 클라이언트 (스마트폰) – 서버(Telegram-cli) 간 메세지를 보내고 받은 상태
5. 서버측에 출력된 메세지
아래는 메세지 명령에 대한 lua 스크립트와 서버 bash shell 을 이용 명령 처리후 리턴 메세지를 처리한 예입니다.
이번에는 서버측에 특정 메시지(명령)을 보내 내부 처리 후 답변을 받는 것에 대해 살펴보겠습니다.
6. 서버측 자원 모니터링을 위한 lua 스크립트 (mrtg, help) 축약
dir_cmd = “/home/telegram/cmd” — bash shell 명령 스크립트 디렉토리 mrtg_dir = “/home/telegram” — MRTG 이미지 출력 디렉토리 cmd_ping = “cd “.. dir_cmd ..”; sh ping.sh” — ping 이라는 메세지 (명령)이 들어온 경우 호출할 bash shell 스크립트 cmd_mrtg = “cd “.. dir_cmd ..”; sh mtg.sh” — mrtg 이라는 메세지 (명령)이 들어온 경우 호출할 bash shell 스크립트 cmd_help = “cd “.. dir_cmd ..”; sh help.sh” — help 이라는 메세지 (명령)이 들어온 경우 호출할 bash shell 스크립트 … 중략 … if ( cmd == ‘mrtg’ ) then if ( file_exists(file_name) ) then – ‘mrtg’ 라는 메세지 (명령)이 들어오면 cmd_mrtg 에 의해 내부 처리 후 send_photo 명령을 이용, if ( cmd == ‘help’ ) then – ‘help’ 라는 메세지 (명령)이 들어오면 특정 디렉토리에 위치한 text 파일을 읽어 send_text 명령을 이용, .. 이하 생략 .. |
7. 지금 traffic 에 대한 mrtg 그래프를 보여줘!
8. 수신된 mrtg 이미지 확대해서 보기
9. help 메세지(명령)을 보내면 서버측에서는 준비된 text 를 보내준다.
테스트해본 바로는 응답 서버측 text 파일 내에 한글이 들어가면 응답해주지 않는다. ㅠㅠ
– 테스트에 사용한 모니터링 lua 스크립트는 좋은진호님 블로그를 참고하였습니다.
– Telegram-cli 는 Unofficial apps 입니다. (https://telegram.org/apps)
– Telegram-cli 는 GPL Ver.2 라이센스를 따르며, 자세한 사항은 Telegram-cli 소스 내 LICENSE 파일을 참고하세요.
GNU General Public License, version 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
* 참고자료
좋은진호님 블로그 – http://truefeel.tistory.com/224
텔레그램 README-LUA – https://github.com/vysheng/tg/blob/master/README-LUA
Lua Check if a file exits – http://stackoverflow.com/questions/4990990/lua-check-if-a-file-exists
텔레그램 Messenger Client – http://www.forum-raspberrypi.de/Thread-tutorial-telegram-messenger-client-auf-dem-raspberry?page=2