기본 콘텐츠로 건너뛰기

추천 가젯

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

c++ 알 수 없는 오류, 다른 소수에서 정의한 글로벌 value를 extern으로 가져와서 쓰는 문제.

 class 객체는 문제없이 가져오는 것을 확인함.


기본 데이터 클래스인 

문제 

extern const unsigned value에 대해서 문제가 생김 


분명히 정의 되어 있음에도 undefined reference error가 남.


해결방법

변수의 namespace를 주는 것으로


해결 기존 


const unsigned  CustomFlashTotalSectorNumber =30;


extern const unsgiend CustomFlashTotalSectorNumber;

사용  

->   에러 

Flash {

const unsigned CustomFlashTotalSector Number = 30;

};


const unsigned  a = Flash::CustomFlashTotalSectorNumber ; 

의 형태로 해결.


값을 가져오는 것으로는 dram 어쩌고 저쩌고 에러가 났고, 여러가지 해법을 

써봐도 다른 형태의 에러가 날 뿐 해결이 불가능 했으나,


undefined referece는 있음에도 못찾는 경우는 대부분 이름 문제이기에 

이렇게 해결함. 


아무래도 전역변수의 이름영역에서의 문제로 보임. 

무조건 다른 파일에 있는 것이면, ::CustomFlashTotalSectorNumber라고 써야한다던지 그런게

아닐까 싶은데, 네임스페이스를 쓰는 것으로 해결을 보았으니, 


이제는 전역변수들은 namespace를 생활화 해야겠음. 저렇게 이름이 긴 변수가, 왜 이런 문제가 생겼을까 혹시 파일간, 텍스트 인코딩이 다른 것일까... 


댓글