通過shell指令碼和企業微信實現報警功能(完整版)
最終效果如圖(GIF太大了 就截了兩張圖)
#!/bin/sh
expireTime=7200
dbFile="db.json"
corpid=xxx
corpsecret=xxx
touser="xxx"
toparty="xxx"
agentid="xxx"
content="伺服器快崩了,你還在這裡吟詩作對?"
# s 為秒,m 為 分鐘,h 為小時,d 為日數
interval=1s
## 傳送報警資訊
sendMsg(){
if [ ! -f "$dbFile" ];then
touch "$dbFile"
fi
# 獲取token
req_time=`jq '.req_time' $dbFile`
current_time=$(date +%s)
refresh=false
if [ ! -n "$req_time" ];then
refresh=true
else
if [ $((current_time-req_time)) -gt $expireTime ];then
refresh=true
fi
fi
if $refresh ;then
req_access_token_url=https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpid\&corpsecret=$corpsecret
access_res=$(curl -s -G $req_access_token_url | jq -r '.access_token')
## 儲存檔案
echo "" > $dbFile
echo -e "{" > $dbFile
echo -e "\t\"access_token\":\"$access_res\"," >> $dbFile
echo -e "\t\"req_time\":$current_time" >> $dbFile
echo -e "}" >> $dbFile
echo ">>>重新整理Token成功<<<"
fi
## 傳送訊息
msg_body="{\"touser\":\"$touser\",\"toparty\":\"$toparty\",\"msgtype\":\"text\",\"agentid\":$agentid,\"text\":{\"content\":\"$content\"}}"
access_token=`jq -r '.access_token' $dbFile`
req_send_msg_url=https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$access_token
req_msg=$(curl -s -H "Content-Type: application/json" -X POST -d $msg_body $req_send_msg_url | jq -r '.errmsg')
echo "觸發報警傳送動作,返回資訊為:" $req_msg
}
loopMonitor(){
echo 'loop'
flag=`uptime | awk '{printf "%.2f\n", $11 "\n"}'`
# 0.7 這個閾值可以視情況而定,如cpu核數為n,則可以設定為0.7 * n 具體視情況而定
c=$(echo "$flag > 0.7" | bc)
echo ">>>>>>>>>>>>>>>>>>`date`<<<<<<<<<<<<<<<<<<"
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'
uptime | awk '{printf "CPU Load: %.2f\n", $11 "\n"}'
echo ">>>>>>>>>>>>>>>>>>end<<<<<<<<<<<<<<<<<<"
if [ $c -eq 1 ];then
sendMsg
fi
}
while true; do
loopMonitor
sleep $interval
done
讓CPU達到100%的指令碼
for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done
歡迎提PR
CSDN:http://blog.csdn.net/qqhjqs?viewmode=list
部落格:http://vector4wang.tk/
簡書:https://www.jianshu.com/u/223a1314e818
Github:https://github.com/vector4wang
Gitee:https://gitee.com/backwxc
相關文章
- 通過shell指令碼定位效能sql和生成報告指令碼SQL
- 通過shell指令碼分析足彩指令碼
- shell指令碼企業巡檢指令碼
- 案例:通過shell指令碼實現mysql資料備份與清理指令碼MySql
- 通過shell定製ash指令碼指令碼
- [ Shell ] 通過 Shell 指令碼匯出 CDL 網表指令碼
- 利用shell指令碼實現計劃任務功能指令碼
- 《怎樣實現通過shell指令碼將使用者踢出系統》指令碼
- 通過shell指令碼防止埠掃描指令碼
- 通過shell指令碼檢視鎖資訊指令碼
- 通過shell指令碼監控oracle session指令碼OracleSession
- 通過shell指令碼生成資料統計資訊的報表指令碼
- 通過shell指令碼抓取awr報告中的問題sql指令碼SQL
- 透過shell指令碼定位效能sql和生成報告指令碼SQL
- [ Shell ] 通過 Shell 指令碼匯出 GDSII/OASIS 檔案指令碼
- shell指令碼實現自動生成awr報告指令碼
- shell指令碼企業實戰系列-nginx原始碼包安裝指令碼Nginx原始碼
- 分散式監控系統Zabbix-3.0.3-新版微信報警(企業微信取代企業號)分散式
- 通過shell指令碼 批量新增使用者指令碼
- 通過shell指令碼新增備庫日誌指令碼
- 通過shell指令碼來統計段大小指令碼
- 通過shell指令碼檢視procedure的資訊指令碼
- 通過shell指令碼檢視package的資訊指令碼Package
- 企業微信JS-SDK實現會話聊天功能JS會話
- Linux Shell 指令碼實現 tcp/upd 協議通訊Linux指令碼TCP協議
- 白碼企業微信CRM中的“todo日程表”功能如何實現?
- 通過shell指令碼批量操作mysql資料庫指令碼MySql資料庫
- 通過shell指令碼檢測MySQL服務資訊指令碼MySql
- 如何通過簡單的shell指令碼操作MongoDB指令碼MongoDB
- 通過shell指令碼快速定位active session問題指令碼Session
- 通過shell指令碼得到資料字典的資訊指令碼
- shell指令碼和python指令碼實現批量ping IP測試指令碼Python
- 美妝行業怎麼樣通過企業微信+scrm實現私域快速增長?行業
- zabbix報警指令碼(wechat,email)指令碼AI
- 【Linux】【Shell】主控指令碼實現Linux指令碼
- shell指令碼實現DNS正向解析指令碼DNS
- 通過shell指令碼監控sql執行頻率指令碼SQL
- 指令碼div實現拖放功能指令碼