2022年8月1日 星期一

【IT Notes】Shell Script擷取關鍵字並發送簡訊

這是一次很特殊的需求,公司採購了Hibox傳真型信箱,中華電信官網說有提供郵件收發傳真和簡訊通知的功能,但使用後卻發現簡訊功能沒有作用,簡訊功能的選項還存在,試了幾次都沒有發出簡訊,打電話去中華電信客服後,對方幫我測試也同意確實沒有成功,轉聯絡後台技術人員才知道,簡訊通知功能多年前就因銷售業績不佳已經取消了,當下我覺得有種廣告不實受騙的感覺,但礙於時間緊迫,東西也採購了,只好決定自己寫shell script處理,意外開啟了人生的第一支程式。

簡單來說,我要透過擷取郵件log關鍵字的方式來發簡訊給接收人員,公司有購買簡訊的功能付物,這時候就很方便取得簡訊api,首先要將Hibox收到的郵件轉寄到公司某新建立的信箱,該帳號需先確保只有收傳真通知的唯一用途,而不能收其他郵件,因為這樣會影響到郵件log的判斷,再來就是透過判斷式和迴圈,將log逐一撈出並篩選,達到最後條件後就發出簡訊,以下是我的shell script。

#!/bin/bash


TODAY=$(date +"%b %d")
CTIME=$(tail -1 /var/log/mail.log | cut -c 1-6)
NTIME=$(echo $CTIME)
RTIME="3 mins ago"
OTIME="6 mins ago"
LFILE=$(date --date="$RTIME" +"%Y%m%d%H%M").txt
OFILE=$(date --date="$OTIME" +"%Y%m%d%H%M").txt
NFILE=$(date +"%Y%m%d%H%M").txt
LOG=$(grep "to=<hibox-notification@interpay.com.tw>" /var/log/mail.log | cut -c 50-100)
LINE=$(grep "to=<hibox-notification@interpay.com.tw" /var/log/mail.log | wc -l)
RECIPIENTS="username@maildomain"
SUB="傳真通知"
CON="收到一封傳真,請至信箱確認。"
NUMBERS="1234567890"

echo $LINE > ~/sh/LOG/$NFILE

if [ ! -z "$LOG" ]
        then
                if [ "$TODAY" = "$NTIME" ]
                        then
                                if [ $(cat ~/sh/LOG/$NFILE) -gt $(cat ~/sh/LOG/$LFILE) ]
                                        then
                                                for i in $NUMBERS
                                                do
                                                        curl -k -O https://smsapi.mitake.com.tw/api/mtk/SmSend\?username\=12345678\&password\=password\&encoding\=UTF8\&dstaddr\=$i\&smbody\=$CON > /dev/null
                                                sleep 5
                                                done
                                                        echo $CON | mail -s $SUB $RECIPIENTS
                                                        echo $LINE > ~/sh/LOG/$LFILE
                                                        rm -rf ~/sh/LOG/$OFILE
                                        else
                                                echo "There is no new logfile."
                                                rm -rf ~/sh/LOG/$OFILE
                                fi
                        else
                                rm -rf ~/sh/LOG/$OFILE
                fi
        else
                echo "There is no FAX."
                rm -rf ~/sh/LOG/$OFILE
fi

沒有留言:

張貼留言

【IT Notes】透過api移轉Gmail到Exchange

 在雲端裡面串接api不是一件很好學的技術,第一次有機會學習到將GWS的Gmail信件全部轉移到M365的Exchange,其實方法很多種,像以前用的pst檔匯出轉移的方式等,但透過api串接,可以批次和排程轉移,是非常方便且準確的作法。唯一讓人感到困難的是學習成本不小,通常需要...