기본 콘텐츠로 건너뛰기

추천 가젯

리눅스 홈서버 알림용 텔레그램 봇(Telegram Bot) 연동 및 쉘 스크립트 구축 가이드

개인 홈서버를 운영하다 보면 백업 완료 여부나 시스템 에러 같은 단방향 알림을 스마트폰으로 빠르게 받아보고 싶어집니다. 외부 메일 서버나 복잡한 SMTP 설정을 거치지 않고, 가장 확실하고 가볍게 쓸 수 있는 텔레그램 봇을 이용한 홈서버 알림 구축 방법 을 정리합니다. 1단계: 텔레그램 봇 생성하기 (BotFather) 텔레그램 앱을 켜고 상단 검색창에 BotFather 를 검색하여 공식 봇(파란색 체크마크 확인)을 엽니다. 대화창에 아래 명령어를 입력하여 새로운 봇을 만듭니다. Plaintext /newbot 봇의 이름(Name)을 입력합니다. (예: My Home Server Bot ) 봇의 아이디(Username)를 입력합니다. (반드시 영문이며 끝에 bot 또는 _bot 으로 끝나야 합니다. 예: my_home_backup_bot ) 생성이 완료되면 HTTP API 토큰(Token)이 발급됩니다. 이 토큰을 안전하게 보관합니다. 2단계: 내 Chat ID(채팅방 고유 번호) 확인하기 텔레그램은 보안상 사용자가 먼저 봇에게 말을 걸어야 메시지를 받을 수 있으며, 봇이 나에게 메시지를 보내려면 고유 Chat ID 가 필요합니다. 텔레그램 검색창에 userinfobot 을 검색하여 들어갑니다. 하단의 [시작하기] 버튼을 누르면 내 계정의 정보와 함께 Id (숫자) 값을 알려줍니다. 이 숫자를 복사해 둡니다. [중요] 1단계에서 만든 내 봇의 아이디(예: @my_home_backup_bot )를 검색해서 대화창을 열고, [시작] 버튼을 누르거나 아무 메시지나 먼저 한 번 전송해 둡니다. 3단계: 리눅스 쉘 스크립트 작성 및 테스트 서버(터미널)에서 환경변수를 설정하고 curl 명령어를 통해 테스트 메시지를 보낼 수 있습니다. 특히 인자값이 없을 때를 대비해 기본값 처리를 해두면 유용합니다. 아래 내용을 포함하는 쉘 스크립트 파일(예: send_telegram.sh )을 작성합니다. Bash #!/bin/bash # 환경변수 설정 (실제 토큰과 C...

gcalcli를 이용한 작업이 끝났을 때, 그 사실을 알리기.



이전에는 linux에서 기본으로 가지고 mail인지 mailx인지 mail이라는 명령어를 사용해서 알리는 방식을 많이 사용했다.  (smtp server 방식)

그 다음으로는 terminal용 smtp 이메일 클라이언트를 사용하기도 하고 다양한 방법들을 사용했다. (smtp client 방식)


일단 첫번째 방법은 많은 이메일 서버에서 스팸으로 거르는 경우가 많다. 서버를 사용한 무차별 이메일 유포를 거르기 위해서 그렇게 하는 듯 하다.

두번째 방법도 좋다. 뭐 설정만 잘한다면 좋은데, 세상이 많이 바뀌었는지 별로 설명을 따라해서 뭔가를 이루는게 쉽지 않다.

  일단 이 두가지 방법이 기존에 하던 방법이라면,

이번에는 아예 새로운 방법으로 접근한다. 구글캘린더를 이용해서 캘린더에 기록으로 남기고 구글캘린더 알림서비스를 사용 한다.

이러한 일에 있어 기본은 terminal에서 사용가능한 툴이어야 한다.
  일단 나는 gcalcli를 사용하도록 한다.

gcalcli를 설치할 때, source를 직접 빌드하던지, 아니면 pip를 사용해서 접근하던지 두가지 방법을 잘 시도해서 하면 된다.


일단 내가 겪었던 이슈들이 있으니 설명하도록 한다. 나는 pip를 사용했다.  중요한 점은 gcalcli는 python2로 코딩 되어 있다는 점이다. 그러므로 당연히 pip2.7이나 이런 식으로 python2에 맡게 다운 받아야 한다. 물론 pip3를 사용해도 제대로 설치된다.

다시 시도해보지 않아 모르지만 나는 user 권한에서 했을 때, 특정패키지가 부족했다.

그리고 pip3를 사용해서 설치하다보니 소스의 첫줄이 /home/user/anaconda/bin/python이었는데 요게 python3.6인가 3.5이다. 아마 pip2.7등을 사용하면 알아서 이 부분을 고쳐주지 않을까 하는 생각이 든다.

난 직접 vim편집기로 저 부분을 /usr/bin/python2.7로 수정하였다.



자 이제 설치가 잘 되었다는 가정하에 진행해보자. gcalcli만 치면  "Error: no command"가 나오면 정상 설치 상태이다.

먼저 gcalcli list라는 명령어를 쳐보자.

그러면 기본 웹브라우저가 켜지면서 oauth를 받아오는 작업을 해준다. 요즘은 이런 식의 보안이 기본이다. 

다시 gcalcli list라는 명령을 쓰면 다음과 같이 자기가 수정가능한 calender와 보고 있는 calendar 등이 나온다.


자 다음은 간단하다.

나 같은 경우는 워크스테이션에서 일할때는 tsp로 job spooling을 하므로, 
문법이 많이 이상하지만 다음과 같이 명령을 집어넣는다.

tsp gcalcli quick 'Job has been the end after 3 minutes' --calendar gcal --reminder 60

저 quick이라는 명령어는 제목 내용 시간 이런거 달지 않고도 일상 언어를 캘린더에 집어넣는 용도로 사용한다. 저 명령어의 의미는 작업이 3분후쯤 끝난다. (문법이 망가졌지만...) 그리고 뒤에 calendar를 지정해주고, 60분동안 계속해서 핸드폰 알림창에 뜨도록 지정한다. 자 그러면 잘 작동한다. 수고.

댓글