[ubuntu server 22.04. 3 LTS (Jammy Jellyfish)] CPU 온도 측정 후, 텔레그램으로 온도 발송하기

yes 2023.10.09 22:08:09

[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
fi

if [ $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 ]