用 Telegram 即時通知 Linux 各式警告

 因公司所有機器都是自建,難免會有故障發生,在故障發生之前可以用 cron 定時監測機器各項數據,減少各項服務中止的情事發生。 𢪙 google 大神,以下為實做案例。

首先先在 Telegram 的 BotFather 創一個 bot 機器人

這時畫面中我們會拿到一組 HTTP API 請先復製起來,接著去左上搜尋我們剛建好的bot名字,

並隨便打個字上去





接著在瀏覽器上打上 https://api.telegram.org/bot<TOKEN>/getUpdates 

我們會得到以下畫面,其中的 id 就是我們要的的資訊,請復製起來

得到 id 跟 TOKEN 後就可以讓我們的機器透過 cron 幫我們自動監測狀態啦。

例如,讓他每天幫我們檢測硬碟是不是好的

vim chk-disk.sh

=====================================================

#!/bin/bash


TOKEN=61947xxxxx:xxxxxxxxxxxxxxxxxxxxWOd_LxbJy1oxG-M

CHAT_ID=1013xxxxxx

URL="https://api.telegram.org/bot$TOKEN/sendMessage"

IP="$(hostname -I)"

NOW=$(date +"%e %b %Y, %a %r")


HOSTNAME=$(hostname)


a=PASSED

b=$(smartctl -a /dev/sda2 |grep result: |awk {'print $6'})


if [ "$a" = "$b" ]; then


MESSAGE="ALERT - '$IP' '$HOSTNAME' on '$NOW'  HDD is not Good!"

curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE"


fi

=====================================================

chmod +x chk-disk.sh



驗証ok


備註:

1. 因為測試的關系,所以把 「if [ "$a" = "$b" ]; then」這行改成等於,實際使用要改為

「if [ "$a" != "$b" ]; then」。

2. 要使用 smartctl 這個指令,請先安裝 smartmontools 這個套件

    #Ubuntu

    sudo apt install smartmontools

    #Centos

     yum install smartmontools


又是愉快的一天!








留言

這個網誌中的熱門文章

Windows 「指定的檔名無效或太長,請指定其他檔名」

Ubuntu 22.04 Rsync自動異地同步

金旭系統 票卷異常查修