본문 바로가기
IT일반

Shell 에서 텔레그램 채널로 메시지 전송

by xavi2019 2023. 2. 1.
  1. 텔레그램 봇 생성
    • 봇 토큰 알아 내기
  2. 텔레그램 채널 생성
    • 채널에 위에서 생성한 봇 추가
    • 채널 ID 알아 내기
  3. sh 파일 생성 
  4. 봇 -> 채널에 메시지 전송

1. 텔레그램 봇은 @BotFather 에게 생성 후 토큰 저장

2. 채널 생성후 위에서 생성한 봇을 관리자로 추가

3. 채널 ID 알아내기

브라우저에서 아래 url로 이동하면 채널ID 나옴. 보통 -1000어쩌고로 나옴

https://api.telegram.org/bot봇토큰/getUpdates

 

EC2나 우분투 서버로 접속해서 아래 명령어 실행

$ touch telegram-send.sh

vi 나 nano 편집기로 들어가서 아래 내용 넣기

#!/bin/bash
    
CHANNEL_ID=채널ID
BOT_TOKEN=봇토큰 

# this 3 checks (if) are not necessary but should be convenient
if [ "$1" == "-h" ]; then
  echo "Usage: `basename $0` \"text message\""
  exit 0
fi

if [ -z "$1" ]
  then
    echo "Add message text as second arguments"
    exit 0
fi

if [ "$#" -ne 1 ]; then
    echo "You can pass only one argument. For string with spaces put it on quotes"
    exit 0
fi

curl -s --data "text=$1" --data "chat_id=$CHANNEL_ID" 'https://api.telegram.org/bot'$BOT_TOKEN'/sendMessage' > /dev/null

편집기에서 나와서 실행권한 부여 

$ chmod +x telegram-send.sh

 

테스트 메시지 전송

$ ./telegram-send.sh "Test message"

메시지가 잘 왔네요.

 

실행파일을 Path가 지정된 곳으로 보내서 편리하게 이용

# 파일을 path가 잡힌곳으로 이동
$ sudo mv telegram-send.sh /usr/bin/telegram-send

# root 소유로 변경 
$ sudo chown root:root /usr/bin/telegram-send

테스트 해 봄

$ telegram-send "Test message: PATH 경로로 옮긴 실행파일"

잘 왔음.

 

이제 다른 프로그램에서 쉽게 호출 가능.

 

하드디스크 남은 용량 텔레그램으로 보내기

import subprocess
import platform

machine = platform.uname().node

message=""
result = subprocess.check_output(["df", "-h", "/"])
lines = result.decode("utf-8").split("\n")
for line in lines:
    if "/" in line:
        message="Remaining disk space:{} - {}".format(machine, line.split()[3])
        print(message)
        break

a = subprocess.check_output(["telegram-send", "{}".format(message)])

크론탭에 등록

# 매분 실행
* * * * * /usr/bin/python3 /home/ubuntu/get_hdd.py

# 1시간마다 실행
*/1 * * * * /usr/bin/python3 /home/ubuntu/get_hdd.py

댓글