[英]Email Alerts when service or server automatically comes up
我正在研究一個bash腳本,該腳本有助於ping並獲取主機和服務的網絡接口級別狀態。 如果失敗,此腳本將發送電子郵件警報。
#!/bin/bash
HOSTS="192.168.8.200"
COUNT=4
for myHost in $HOSTS
do
count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
if [ $count -eq 0 ]; then
# 100% failed
echo -e "HOST:$myHost is down (ping failed) at $(date)" | mailx -A gmail -s “Mail subject” anymail@anydomain.com
fi
done
這很好。 但是需要幫助,以便在主機自動啟動(ping成功)時獲得一封電子郵件警報。
您需要在腳本調用期間保存主機的狀態(上/下)。 如果主機為“啟動”,而先前的狀態為“關閉”,則需要發送電子郵件。 您可以只將“檢查命令”的結果寫入/ tmp /中的文件,如果檢查返回服務器已啟動,則您將讀取文件的內容。 如果文件中的狀態為“關閉”,則向電子郵件發送寫為“向上”的文件。 在下一次檢查服務器是否啟動時,將不會再發送其他電子郵件,因為之前服務器也處於“啟動”狀態。
#!/bin/bash
HOSTS="192.168.8.200 192.168.8.201 192.168.122.1"
COUNT=4
STATE="/tmp/ping_state.txt"
for myHost in $HOSTS
do
count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
if [ $count -eq 0 ]; then
# 100% failed
#echo -e "HOST:$myHost is down (ping failed) at $(date)" | mailx -A gmail -s “Mail subject” anymail@anydomain.com
echo "host $myHost down"
#delete all previous entries of that ip
sed -i "/$myHost/d" $STATE
#mark host as down
echo "$myHost - down" >> $STATE
else
CHECK=`grep "$myHost" $STATE | grep -o "down"`
if [ "$CHECK" = "down" ]; then
echo "host $myHost up again"
#insert email for host up here
fi
#delete all previous entries of that ip
sed -i "/$myHost/d" $STATE
echo "$myHost - up" >> $STATE
fi
done
為了進行簡單的測試,我只使用了echo語句,而不是發送電子郵件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.