기본 콘텐츠로 건너뛰기

추천 가젯

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

Homm3 모드(MOD) 조각 개발 기획서. - 임프(패밀리어) 자기 희생 특기., 데빌-강제희생

{0x59F63B, (long)MovingMonsters8, H_LONG}, // sacrifice select whom to revieve
{0x59F65A, (long)MovingMonsters9, H_LONG}, // sacrifice select whom to kill
이미 있다. option 759 - Devils sacrificing.erm
을 참조하면 되겠고, 임프만 어떻게 하면 되려나.
SOD3.2와 WOG의 해당 커맨드 주소를 알게되어 기획 가능.

임프는 자기를 희생해서 우리편을 살릴 수 있음. 
패밀리어는 자기를 희생해서 우리편을 살릴 수 있음(
    차이점이 필요함.
    1. 패밀리어만 가능하게 한다. 
    2. 우리편을 살리는데 필요한만큼만 희생한다. 
    3. 부활 불가능하지만 시체를 남긴다. (!!) 핏로드와 연계 가능 최종목표는 여기로하자.
당장은 해당 기능은 불가능하므로 2번을 가능하도록 코딩을 하자.
ERM에 해당 명령은 존재하지만 살짝 고쳐야하므로, c/c++를 좀 만져야함. 
필요한만큼의 희생은 부활마법에서 잃은 체력을 계산할 수 있음.
그 다음 필요한 패밀리어의 수를 계산할 수 있음. 
이 방법을 쓰면 부활 불가능을 위해서, 초기 전투시 시작 유닛의 숫자 부분을 고치는 코드가 필요함!!

데빌특기 우리편 강제희생.- 
임프 특기랑 결국은 같은 방향. 인퍼노 최하층 1레벨은 알아서 희생하는 역할, 7레벨은 남을 희생시켜서라도 자기가 오래사는 역할!!로 해서 희생마법의 두 특징을 나누어서 사용가능하게 하는게 목표. 
최고의 이기주의를 방향으로하고, 기본체력이 작으므로, 행동스택을 잃지 않고 희생시킨 후, 원래대로 전투를 가능하게하거나, 
우리편에 데빌이 있으면, 다른 유닛들한테 그런특기가 가능한 것 처럼 바꾸는 방향도 가능.


WOG관련 코드에서 __newcallers가 어떤 구조인지 알아야함. 
첫번째가 주소인것 같으나 offset이 있을 수 있음. 두번째는 리턴(&함수이름)의 형태로 보임 하지만 정확치 않음, 3번째는 함수형태를 말하는듯함. H_CALL5는 5개 변수를 받는 STDCALL또는 FASTCALL일 것. 
그러면 H_LONG은 무엇일까? LONG하나를 받는 함수일 것인가. 아 롱점프인듯하다. 
LJMP니까 절대 주소가 맞고, HOTA도 같은 위치일 수 있겠음.  같은위치 맞는듯.
Long jump로 이름없는 함수로 뛰는데 이름없는 함수는 ghidra에서도 네이밍을 해주기까 까다로움.
코맨트를 열심히 달아놔야 할 것으로 보임.
졸업준비로 바빠서 기획서만 쓰고 마침.

댓글