기본 콘텐츠로 건너뛰기

추천 가젯

리눅스 홈서버 알림용 텔레그램 봇(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...

남이 Natron으로 만든 Lower Third를 연습하다가 템플릿처럼 사용하는 방법을 알게 되었다.

 Natron은 node 기반 opensource vfx application이다. 

vfx 및 드로잉 툴들은 어느정도 발전이 되었다면, node기반 또는 레이어 기반의 형태로 나아간다. 

Node기반 툴들은 Davinci resolve,(NLE) Blackmagic Fusion(VFX)이라는 걸출한 유료프로그램이 있고, Blender라는 NLE, 3D modeling, Node vfx를 지원하는 툴도 있다. 

Natron은 무료이며 일단 openfx기반이라 다양한 행위를 할 수 있다고 하는데, 그게 무슨 장점인지는 모르겠다.  

Natron은 일단 Fusion이라는 툴을 써본 결과로 말하자면, 아무것도 배우지 않은 백지 상태에서는 차이를 알 수 없다.  왜냐 ... Layer기반을 쓰다가 이걸 처음 만지면, 어떻게 하는지 알수가 없기에... 그러하다.  뇌에서 Layer가 아닌 모든 것들이 다 공통으로 묶인 것으로 여겨진다. 

Natron Youtube Lower third 강좌를 따라해보니, Natron은 결과물 출력으로 단일영상 또는 이미지시퀀스로  처리한다.  

여기까지 따라하니, 내 이름을 특정 Text대신 쓰고난 이후에, 

다양한 상황에서 쓰기 어렵다는 생각이 들어, 템플릿으로 쓸 방법을 찾는다. 

일단 Natron Project파일은 xml기반이라, 노가다를 하고, nodejs를 사용하면, 텍스트 기반이니 당연히 가능하다.  

일단 여러 검색을 해보니, Natron을 터미널에서 사용해, 출력물을 얻는 방법이 있음을 알게 되었다. 

외부 툴을 사용하지 않고, Natron만 가지고 이것을 하고 싶다. xml은 구조화는 잘되어 있지만 인간이 접근하기 좋은 규격은 아니다. 

Natron은 python script를 사용할 수 있고, 잘못검색을 하면, python을 프로젝트 파일처럼 사용하는 부분만 보게된다. 


좀 더 신경을 쓰면, 프로젝트파일을 불러오고, onload시 python을 불러오는 옵션이 있다.

-b는 터미널에서  바로 출력물을 얻겠다. 

-l(L이다. ) 이 해당하는 python 스크립트이다. 

natron -b Natron.project.ntp -l python1.py 

이 두 명령으로 python1실행으로 내부가 변한 상태의 출력물을 얻을 수 있다. 

저 python1.py의 구조가 이제 중요하다. 


내부 노드에 어떻게 접근을 할 수 있을까?

Natron은 일단 프로젝트 파일을 불러온 후 프로젝트 xml을 잘 정리해서 app1이라는 클래스에 모든 정보를 넣는다. 그리고 노드이름으로 간단히 접근할 수 있다. 

 1  
 2 node = app1.Text1
 3  
 4 node.text.set("hello World")

내 경우는 위 처럼 2줄짜리 프로그램으로 글자를 바꿀 수 있게 된다. 

뭐 더 고친다면 소속까지 한 줄 더 작성하는 정도이겠다. 

자이제 natron 명령으로 여러명의 개인 소개용 Lower Third를 만들도록하자. 

bash까지 사용하면 못할게 없고, sed 명령어를 사용해 쉽게 작업할 수 있다. 

(sed를 사용하면, 애초에 매우 쉽다. )


자료리스트

konkuk으로 시작하는 친구들은, writer까지 작업이 되어있어서 편리하다. 원본이랑 사실 별차이 없다. 

300프레임에 25MB정도씩 나와서 생각보다 무겁지만 재미있는 작업이 될 것이다. 

csv파일로 로고파일주소, Text1 내용  Text_2 내용 등을 만들어 놓으면, 여러사람에 대해 설명하는 작업을 해서 재미있게 할 수 있을 것이다. 


열심히 썼지만, 문제가 있는데, Natron은 저 움직이는 이미지 작업 자체가 더럽다. 뭐... 개인적으로 3D Text의 두깨 기능이 지원이 안되서, 배우는건 Natron으로 하고, 실지로는 Blender를 쓰지 않을까... 


돈있으면, after effect용 템플릿을 구하면 된다. 


이 글에서 가장 중요한건, app1이라는 클래스 이름이다. 

댓글