Aif 2023. 8. 24. 14:41

Telegram(텔레그램) 봇을 이용해 메세지 전송하기 – CHICPRO

 

위글을 따라하여 텔레그램 Bot을 생성한 뒤 API와 유저 ID를 확인한다.

 

그리고 두 개의 sh 파일을 만든다.

 

Write.sh 

#!/bin/bash
#파티션별 사용량을 확인해서 80% 이상인 파티션이 있으면 관리자에게 메시지 보냄
#1.파티션별 사용량을 확인
#2.크기를 배교해서 처리
#3.use가 80% 이상이면 관리자에게 메세지
#4.80% 미만이면 아무것도 안함
TEXT="$(df -h | \
         awk '{
            gsub("%","");
            USE=$5;
            MNT=$6;
            if ( USE > 3 )
               print MNT,"파티션이 ",USE,"%를 사용 중 입니다."
            }' | \
            grep -v "^[A-Z]")"
#TEXT의 문자가 없다면 0바이트가 입력이 된다
# ${#TEXT} $TEXT변수의 사이즈를 확인할수가 있다
HOST="$(hostname)"
if [ ${#TEXT} -gt 1 ]
then


	# 메시지 전송 파일
   /root/SHELL/SendMessage.sh "${HOST}" "${TEXT}"
   
   
fi

위 Write.sh 에서 SendMessage.sh 의 경로를 잘 확인해야한다.

 

TEXT 변수를 확인해보면, 용량이 3퍼센트 이상 사용되는 곳을 출력하는 스크립트다.

df -h | awk '{gsub("%","");USE=$5; MNT=$6;if ( USE > 3 )print MNT,"파티션이 ",USE,"%를 사용 중 입니다."}'

 

SendMassage.sh

#!/bin/bash
# telegram bot으로 메세지를 보내는 쉘 스크립트
# 2개의 파라미터가 필요함
# 파라미터가 두개가 안될경우 사용방법을 출력하고 스크립트를 종료
# 1.서버 호스트이름
# 2. 메세지
# 실행결과는 현재 날짜/시각,서버이름,지정한 메세지를 텔레그램으로 보냄
#파라미터 확인
if [ $# -ne 2 ]
then
   echo
   echo "Usage "
   echo "$0 {HOSTNAME} {MESSAGES}"
   echo
   echo "exemple "
   echo "$0 \"cent1\" \"/var/log/nginx 파티션을 확인하세요\""
   echo
   exit 0
fi
#텔레그램 봇 관련 정보


#!!!!!!!!!!!!!!!!!!!!!!!!!!
ID="   "
API_TOKEN="   "
#!!!!!!!!!!!!!!!!!!!!!!!!!!


URL="https://api.telegram.org/bot$API_TOKEN/sendMessage"
#날짜
DATA="$(date "+%Y-%m-%d %H:%M")"
#보낼 메세지 작성
TEXT="$DATE [$1] $2"
#메세지 보내기
curl -s -d "chat_id=$ID&text=$TEXT" ${URL} > /dev/null

위 SendMessage.sh에서 아까 확인한 ID와 API_TOKEN에 값을 입력해야한다.

 

ID는 채팅을 전송받을 유저의 ID이며, 자신의 ID를 입력한다.

 

API_TOKEN은 생성된 봇의 토큰을 입력해준다.

 

그리고 Write.sh를 실행하면 텔레그램에서 메세지가 전송된다.

 

sh Write.sh

 

crontab을 이용하여 주기적으로 메모리나 용량을 체크하여 과부하가 걸리면 

 

담당자에게 메시지가 전송되도록 응용할 수 있다.