main.sh內容 #!/bin/bash #Written by aming. # 是否發送郵件的開關 export send=1 # 過濾ip地址 export addr=`/sbin/ifconfig |grep -A1 "ens33: "|awk '/inet/ {print $2}'` dir=`pwd` # 只須要最後一級目錄名 last_dir=`echo $dir|awk -F'/' '{print $NF}'` # 下面的判斷目的是,保證執行腳本的時候,咱們在bin目錄裏,否則監控腳本、郵件和日誌頗有可能找不到 if [ $last_dir == "bin" ] || [ $last_dir == "bin/" ]; then conf_file="../conf/mon.conf" else echo "you shoud cd bin dir" exit fi exec 1>>../log/mon.log 2>>../log/err.log echo "`date +"%F %T"` load average" /bin/bash ../shares/load.sh #先檢查配置文件中是否須要監控502 if grep -q 'to_mon_502=1' $conf_file; then export log=`grep 'logfile=' $conf_file |awk -F '=' '{print $2}' |sed 's/ //g'` /bin/bash ../shares/502.sh fi
[root@hf-01 ~]# cd /usr/local/sbin/ [root@hf-01 sbin]# mkdir mon [root@hf-01 sbin]# cd mon [root@hf-01 mon]# ls [root@hf-01 mon]# mkdir bin conf shares log mail [root@hf-01 mon]# ls bin conf log mail shares [root@hf-01 mon]#
[root@hf-01 mon]# cd bin [root@hf-01 bin]# ls [root@hf-01 bin]# vim main.sh #!/bin/bash #Written by aming. # 是否發送郵件的開關, export send=1 #只要把send 改爲了1 ,就會給下面全部的監控的項目都會發送郵件,export表示全部的變量會應用在全部的子腳本里(如果系統處於維護狀態,就須要關閉全部的服務,這時候就須要先把告警關閉,不然會一直髮郵件) # 過濾ip地址;能夠加定義一個hostname,這樣能夠知道是哪臺機器 export addr=`/sbin/ifconfig |grep -A1 "eno6777736: "|awk '/inet/ {print $2}'` dir=`pwd` # 找一下當前腳本所在的目錄 # 只須要最後一級目錄名 last_dir=`echo $dir|awk -F'/' '{print $NF}'` # 下面的判斷目的是,保證執行腳本的時候,咱們在bin目錄裏,否則監控腳本、郵件和日誌頗有可能找不到 if [ $last_dir == "bin" ] || [ $last_dir == "bin/" ]; then conf_file="../conf/mon.conf" else echo "you shoud cd bin dir" exit fi exec 1>>../log/mon.log 2>>../log/err.log #日誌記錄 echo "`date +"%F %T"` load average" #求出系統負載 /bin/bash ../shares/load.sh #先檢查配置文件中是否須要監控502,到配置文件中遍歷一遍,看看是否須要監控502 if grep -q 'to_mon_502=1' $conf_file; then export log=`grep 'logfile=' $conf_file |awk -F '=' '{print $2}' |sed 's/ //g'` #找出log的路徑 /bin/bash ../shares/502.sh fi
。shell