用shell+sendmail實(shí)現(xiàn)服務(wù)器監(jiān)控報(bào)警小腳本
這種email報(bào)警腳本遍地都是,很多用的sendmail、postfix,感覺(jué)有些大材小用了;也有些用perl的NET::SMTP和Authen::SASL模塊發(fā)信的,不過(guò)我perl用的不好,老發(fā)出些莫名其妙的郵件來(lái)(比如if(a>1){print(a);},最后郵件里的顯示的是0.99……);最后采用sendEmail這個(gè)成型的perl程序發(fā)信報(bào)警,而實(shí)時(shí)監(jiān)控部分回歸shell,終于完成。
wget <a >http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz</a>
tar zxvf sendEmail-v1.56.tar.gz
cp sendEmail-v1.56/sendEmail /shell/check/
cat >> check.sh <<EOF
文件--check.sh:
#!/bin/bash
checkmail() {
/usr/bin/perl ./sendEmail -f userid@mail.com -t oneuserid@mail.com –cc twouserid@mail.com threeuserid@mail.com
-u "$subject" -m "$data" -s smtp.mail.com -xu userid -xp password
sleep 300
}
while true;do
loadavg=`awk '{print $2}' /proc/loadavg`
diskuse=`df |awk '/cache/{print $5}'`
servrun=`netstat -pln|awk -F/ '/:80/{print $NF}'`
ip=`ifconfig|awk '/cast/{print $2}'|awk -F: '{if(NR==1){a=$2}else if(NR==2){b=$2}}END{print b"-"a}'`
data=`echo -e "ip:$ip\nloadavg/5min:$loadavg\tcacheuse%:$diskuse\tservice:$servrun"`
diskper=`echo $diskuse|sed 's/%//'`
num=`ps aux|grep check.sh|grep -v grep|wc -l`
if [[ $num > 2 ]];then
break 2
fi
if [[ $loadavg > 1.00 ]] && [[ $diskper > 90 ]];then
subject="warning-$ip-loadavg-disk"
checkmail
else if [[ $loadavg > 1.00 ]];then
subject="warning-$ip-loadavg"
checkmail
else if [[ $diskper > 90 ]];then
subject="warning-$ip-disk"
checkmail
fi
sleep 60
done
EOF
完成,執(zhí)行sh check.sh &> /dev/null即可。
報(bào)警郵件:
標(biāo)題:warning-192.168.0.100-10.10.10.10-disk ip:192.168.0.100-10.10.10.10 loadavg/5min:0.38 cacheuse%:94% service:nginx
相關(guān)文章
linux bash腳本監(jiān)控啟動(dòng)停止weblogic服務(wù)的腳本寫(xiě)法
這篇文章主要介紹了linux bash腳本監(jiān)控啟動(dòng)停止weblogic服務(wù)的腳本寫(xiě)法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02Shell內(nèi)置命令教程之a(chǎn)lias和echo
我們?nèi)粘J褂胹hell輸入命令得到結(jié)果的方式是交互式的方式,而shell腳本使用的是非交互式方式,shell提供了alias功能來(lái)簡(jiǎn)化我們的日常操作,下面這篇文章主要給大家介紹了關(guān)于Shell內(nèi)置命令教程之a(chǎn)lias和echo的相關(guān)資料,需要的朋友可以參考下2022-03-03Shell腳本定時(shí)備份清除運(yùn)行系統(tǒng)日志的代碼
寫(xiě)備份并清除老日志Shell腳本,并附帶一個(gè)清除日志(log)的shell腳本代碼,需要的朋友可以參考下2013-02-02修改Apache配置指定php配置文件php.ini的位置方法
下面小編就為大家?guī)?lái)一篇修改Apache配置指定php配置文件php.ini的位置方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02Linux?用戶(hù)名稱(chēng)高亮和最近路徑顯示問(wèn)題
這篇文章主要介紹了Linux?用戶(hù)名稱(chēng)高亮和最近路徑顯示,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07完美解決ntp的錯(cuò)誤問(wèn)題no server suitable for synchronization fo
下面小編就為大家?guī)?lái)一篇完美解決ntp的錯(cuò)誤問(wèn)題no server suitable for synchronization fo。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03shell腳本實(shí)現(xiàn)服務(wù)器進(jìn)程監(jiān)控的方法
這篇文章主要介紹了shell腳本實(shí)現(xiàn)服務(wù)器進(jìn)程監(jiān)控的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-04-04linux軟件版本管理命令update-alternatives使用詳解
這篇文章主要介紹了linux軟件版本管理命令update-alternatives使用詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04shell 判斷字符串是否存在數(shù)組中的實(shí)現(xiàn)示例
這篇文章主要介紹了shell 判斷字符串是否存在數(shù)組中的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10linux數(shù)據(jù)庫(kù)備份并通過(guò)ftp上傳腳本分享
這篇文章主要介紹了linux數(shù)據(jù)庫(kù)備份并通過(guò)ftp上傳腳本,腳本還可以備份網(wǎng)站,需要的朋友可以參考下2014-03-03