簡體   English   中英

服務或服務器自動啟動時的電子郵件警報

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM