기본 콘텐츠로 건너뛰기

추천 가젯

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

sxhkd Daemon : Simple X hotkey daemon

 # ~/.config/sxhkd/sxhkdrc 


alt + {a-z}
    bash ~/bin/shotcuts/shortcut.sh {a-z}

 

kde를 주로사용평소 KDE 환경에서 GUI 설정을 통해 단축키를 만들어 사용했지만, 이 분의 SXHKD 설정 파일을 보니 X 윈도우 환경에서도 간편하게 단축키를 정의할 수 있다는 점이 인상적입니다. (참조 링크)

특히 PDF 검색 workflow가 흥미롭습니다. 파일 목록을 SXHKD를 통해 넘겨주면, 가운데 창에서 선택하여 PDF 뷰어로 바로 열람하는 방식인데, 파일 목록을 보여줄 때 미리보기 기능까지 고려했을 가능성이 엿보입니다.

파일 검색에 활용된 rofi는 fuzzy 검색을 지원하므로, 파일명은 물론 내용, 저자, 특정 저널까지 자유롭게 검색할 수 있다는 장점이 있습니다. 특히 지도교수님이나 본인의 저서를 검색할 때, 연구자 규모를 고려하면 검색 결과가 많지 않을 것이기에 더욱 효과적으로 작동할 것으로 보입니다.

텍스트 노트 작성 환경도 눈여겨볼 만합니다. 이 분은 Vim을 사용하여 LaTeX 문서를 편집하고, ranger라는 텍스트 기반 파일 관리자를 활용합니다. 필요에 따라 midnight commander와 같은 다른 툴을 사용하거나, 단순히 해당 디렉토리에서 Bash를 열어 작업할 수도 있습니다.

ranger가 w3m-img와 연동하여 이미지를 다운로드하는 것을 보면, HTML 뷰어 기능이 내장되어 있을지도 모르겠습니다. 직접 사용해 보니 macOS의 Finder와 유사한 세 개의 창으로 구성된 파일 관리자입니다. 상위 폴더, 현재 폴더 (파일 목록), 그리고 선택한 폴더의 내용물 (파일이면 미리보기)을 직관적으로 보여줍니다. Alacritty, Zed Warp과 같이 그래픽 지원 터미널(흔히 Kitty Graphics라고 불리는)을 사용하는 점도 주목할 만합니다.

case $key in
p ) cd ~/phd/papers;
pdf_file="$(ls . | rofi -theme ~/.config/rofi/theme-wide.rasi -i -dmenu)";
[ -z "$pdf_file" ] && exit 0;
[ -f "$pdf_file" ] && zathura "$(realpath "$pdf_file")" || sensible-browser "https://google.com/search?q=$pdf_file" ;;


r ) $terminal "ranger ~/phd/notes/$(date +"%F")" ;; m ) $terminal "vim ~/phd/notes/master.tex ;;
n ) $terminal "cd ~/phd/notes/$(date +"%F"); $vim ~/phd/notes/$(date +"%F")/note.tex" ;;
o ) zathura ~/phd/notes/master.pdf ;;
x ) open_xournal ;;
f ) $node $root/copy-pdf-reference.js ;;
esac

언뜻 보면 특별한 설정은 아닌 듯하지만, KDE나 GNOME 역시 자체적인 전역 단축키 설정을 지원하기 때문입니다.

SXHKD의 장점은 컴퓨터 시작 시 자동으로 실행되지 않도록 설정하고, 필요할 때만 실행하여 작업할 수 있다는 점입니다. 또는 작업 종류에 따라 전역으로 SXHKD 설정을 전환하며 사용할 수도 있습니다. 실제로 현재 설정도 기본적으로 컴퓨터 시작 시에는 활성화되지 않도록 되어 있습니다.

rofi를 활용한 fuzzy 검색 기능은 Plasma Runner로도 유사하게 구현할 수 있으며, 결국 모든 기능에는 대안이 존재합니다. 하지만 이 분의 설정처럼 여러 툴을 유기적으로 묶어 마치 하나의 서비스처럼 효율적으로 사용하는 방식은 정말 대단하다고 생각합니다.

참고 링크를 따라가 보면, LaTeX 문서 작업 중 급하게 그림을 그려야 할 때 Inkscape를 실행하고, 키보드 이벤트를 캡처하여 미리 설정된 펜 굵기, 대시 타입, 펜 색상 등으로 그림을 그리고, 그림에 LaTeX 주석까지 쉽게 추가할 수 있도록 설정해 둔 것을 확인할 수 있습니다. 심지어 그림을 저장하고 Vim으로 돌아오면 작성하던 LaTeX 문서에 해당 그림을 바로 삽입할 수 있도록 연동해 놓았습니다.

전반적으로 이 분의 작업 방식은 다양한 툴을 효율적으로 연동하여 개인 작업 환경을 극대화한 좋은 예시라고 생각하며, 각 툴의 강력한 기능을 활용하고 워크플로우에 맞게 통합하는 아이디어를 얻을 수 있었습니다. 특히 단축키를 통해 자주 사용하는 작업을 빠르게 실행하고, 텍스트 기반 툴을 생산적으로 활용하는 점은 저도 제 작업 환경에 적용해 볼 만한 부분입니다.


댓글

  1. 요즘은, 타일링 윈도우 매니저라고, 겹쳐지지 않도록 새로운 창이 나올 때, 타일처럼 윈도우를 놓는 윈도우 매니저를 쓴다고 합니다.
    위 글 사용자도, tiling window manager를 쓰고 있다고 하네요.
    최소화된 윈도우 매니저라, 저런 단축키 설정같은 것도 내장하지 않는다고 하니, 오히려 리눅스의 철학에 맞는 윈도우 매니저군요.
    작업만을 목적으로 따로 다른 윈도우 매니저 써보는 것도 나쁘지 않겠어요. ctrl+alt+Insert 명령을 하면 kde에서는 현재 세션이 있는 상태에서 새로운 세션을 열어주는데 이렇게 사용하면 되지않을까 봅니다. 현재로는 이게 작업전용 세션이겠지요.

    답글삭제

댓글 쓰기