[ubuntu server 22.04. 3 LTS (Jammy Jellyfish)] CPU 온도 측정 후, 텔레그램으로 온도 발송하기
glances, netdata, uptimekuma 등 모니터링 앱이 많이 있습니다.
본인은 단순히 CPU 온도를 측정 후에, 과도하게 높으면 텔레그램으로 온도를 알려주는 앱이 필요했습니다.
위에 언급했던 앱들은 notification 을 만드는 것도 쉽지는 않았습니다.
그러던 차에, 구글 검색을 통해서 CPU 온도를 측정 후, 액션을 취하는 스크립트를 발견 했습니다.
우선 bash 쉘에서 텔레그램 보내는 스크립트
#!/bin/bash
TOKEN="your_bot_token"
CHAT_ID="your_chat_id"
MESSAGE="Hello, world!"
curl -s -X POST https://api.telegram.org/bot$TOKEN/sendMessage -d chat_id=$CHAT_ID -d text="$MESSAGE" > /dev/null
우분투 cli 에서 CPU 온도 가져오기
hs7@hcp:~$ cat /sys/class/thermal/thermal_zone*/temp
56000
57000
hs7@hcp:~$ paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) | column -s $'\t' -t | sed 's/\(.\)..$/.\1°C/'
acpitz 55.0°C
x86_pkg_temp 57.0°C
두가지를 조합해서 만들었습니다.
#!/bin/bash
tmp_warn="76"
tmp_alarm="88"
tmp_unit="C"tmp_chk=$(mawk '{printf("%.0f",$1/1000)}' /sys/class/thermal/thermal_zone1/temp)
TOKEN="6424****03:AAGWNZFzFf*******C_LCgL8"
CHAT_ID="540******08"
MESSAGE01="${0##*/}: Error at reading the CPU temperature. Unknown command? No numeric value? Aborting script."
MESSAGE02="Current temp: $tmp_chk °$tmp_unit"MESSAGE03="HIGH !!! Current temp: $tmp_chk °$tmp_unit"
if [ -z "$tmp_chk" ]
then
curl -s -X POST https://api.telegram.org/bot$TOKEN/sendMessage -d chat_id=$CHAT_ID -d text="$MESSAGE01" > /dev/null
exit 1
fi# ${0##*/} prints the script name by removing the path name from the script file. So /usr/local/bin/temp_mon becomes temp_mon.
status_warn=$(echo $tmp_chk '>=' $tmp_warn | bc -l)
status_alarm=$(echo $tmp_chk '>=' $tmp_alarm | bc -l)# Section below terminates script when neither of two thresholds condition occur
if [[ "$status_warn" == 0 && "$status_alarm" == 0 ]]
then
exit 0
fiif [ $status_alarm == 1 ]
then
curl -s -X POST https://api.telegram.org/bot$TOKEN/sendMessage -d chat_id=$CHAT_ID -d text="$MESSAGE03" > /dev/null
elif [ $status_warn == 1 ]
then
curl -s -X POST https://api.telegram.org/bot$TOKEN/sendMessage -d chat_id=$CHAT_ID -d text="$MESSAGE02" > /dev/null
fi
실행권한 부여
sudo chmod +x /vo2/docker/script/temp.sh
실행
hs7@hcp:/vo2/docker/script$ ./temp.sh
crontab 에 등록
*/15 * * * * /vo2/docker/script/temp.sh
crontab 재시작
hs7@hcp:/vo2/docker/script$ sudo service cron reload
* Reloading configuration files for periodic command scheduler cron [ OK ]