繁体   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