ping xx.xx.xx.xx 每间隔2分钟ping 1次 如果ping不通发送错误邮件报警,当恢复再发送1次,
但现在的问题是如何实现只会在第一次检测到故障时发送一封“故障报警”邮件。服务器故障恢复后,监控程序会再发送一封“故障恢复”邮件。而不是重复发送错误的邮件或正确的邮件。
ping=`ping -c 4 xx.xx.xx.xx`;
if [[ $ping -gt 0 ]];then
{
to="139*********@139.com"
subject="网络正常"
message="网络正常"
headers="[email protected]"
echo $message | mail -s $subject $to -- -f $headers
}
else
{
to="139*********@139.com"
subject="网络异常"
message="网络异常"
headers="[email protected]"
echo $message | mail -s $subject $to -- -f $headersfi
}
fi
重复故障报警的问题
- hoxily
- 帖子: 39
- 注册时间: 2011-02-11 21:10
Re: 重复故障报警的问题
设置一个状态标志,记录“上一次检测结果”!
那么是否需要发送邮件的判断改为本次检测结果+上一次检测结果两个结合起来看。
注意记得更新这个“上一次检测结果”。

那么是否需要发送邮件的判断改为本次检测结果+上一次检测结果两个结合起来看。
注意记得更新这个“上一次检测结果”。

- hoxily
- 帖子: 39
- 注册时间: 2011-02-11 21:10
Re: 重复故障报警的问题
伪代码如下:
这个关题的关键在于网络状态发生了变化才去发邮件。
----传说中的分割线----
LastSuccess = true;//初值
while(true)
{
CurrentSuccess = PingTest();
if (LastSuccess == true && CurrentSuccess == false)
{// 遇到从通到不通的跳变才发送报告不通的邮件。
SendMail("Not Success");
}
else if (LastSuccess == false && CurrentSuccess == true)
{// 从不通到通的变化,发送报告通的邮件
SendMail("Success");
}
LastSuccess = CurrentSuccess;//每次测试后更新状态
}
这个关题的关键在于网络状态发生了变化才去发邮件。
----传说中的分割线----
LastSuccess = true;//初值
while(true)
{
CurrentSuccess = PingTest();
if (LastSuccess == true && CurrentSuccess == false)
{// 遇到从通到不通的跳变才发送报告不通的邮件。
SendMail("Not Success");
}
else if (LastSuccess == false && CurrentSuccess == true)
{// 从不通到通的变化,发送报告通的邮件
SendMail("Success");
}
LastSuccess = CurrentSuccess;//每次测试后更新状态
}
- susbarbatus
- 帖子: 2966
- 注册时间: 2010-04-10 16:14
- 系统: Arch Linux