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