我从各种SOF线程创建的这个工具有效吗?它会起作用吗?我想每分钟对服务器进行一次ping测试。如果它连续失败5次,它会发送一封电子邮件。然后,它刷新并重置脚本,以便再次检查。
#!/bin/bash
# ping checker tool
numOfFails=0
incrememnt=1
EMAILMESSAGE="/tmp/emailmessage.txt"
while true; do
if ! ping -c 1 google.com ; then #if ping exits nonzero...
numOfFails=$(($num + $increment))
else
numOfFails=0
fi
if ((numOfFails > 4)); then
numOfFails=0
echo "SAN is offline!" > $EMAILMESSAGE
mail -s "SAN offline" "test@test.com" < $EMAILMESSAGE
fi
sleep 60 #check again in one minute
done发布于 2013-08-19 11:45:02
你的代码根本不能工作,这是一个修订版:
#!/bin/bash
# ping checker tool
FAILS=0
EMAIL_ADDRESS="example@example.com"
SERVER="192.168.1.1"
SLEEP=60
while true; do
ping -c 1 $SERVER >/dev/null 2>&1
if [ $? -ne 0 ] ; then #if ping exits nonzero...
FAILS=$[FAILS + 1]
else
FAILS=0
fi
if [ $FAILS -gt 4 ]; then
FAILS=0
echo "Server $SERVER is offline!" \
| mail -s "Server offline" "$EMAIL_ADDRESS"
fi
sleep $SLEEP #check again in SLEEP seconds
done更改您的电子邮件地址和正在测试的服务器的IP地址的example@example.com和192.168.1.1。我建议使用和IP地址而不是主机名,以防止名称解析错误与连接错误混淆。
请注意,虽然这将会工作,但我建议运行一个与cron稍有不同的脚本,而不是像您希望的那样连续运行,当从cron运行时,您不需要监视脚本是否正在运行,因为如果它由于某种原因停止,对服务器的监视也会停止。
每分钟从crontab运行类似这样的命令。
#!/bin/bash
# ping checker tool
TMP_FILE="/tmp/ping_checker_tool.tmp"
if [ -r $TMP_FILE ]; then
FAILS=`cat $TMP_FILE`
else
FAILS=0
fi
EMAIL_ADDRESS="example@example.com"
SERVER="192.168.1.1"
ping -c 1 $SERVER >/dev/null 2>&1
if [ $? -ne 0 ] ; then #if ping exits nonzero...
FAILS=$[FAILS + 1]
else
FAILS=0
fi
if [ $FAILS -gt 4 ]; then
FAILS=0
echo "Server $SERVER is offline!" \
| mail -s "Server offline" "$EMAIL_ADDRESS"
fi
echo $FAILS > $TMP_FILE发布于 2013-08-18 21:03:33
考虑使用Pingdom。它为您提供此服务。
您没有考虑到的一件事是,一旦您的站点关闭,您将继续每分钟收到电子邮件消息,直到站点重新启动,或者直到您停止此脚本。
一种很好的方法是,一旦检测到站点关闭,就将状态从站点关闭时的报告切换到站点运行时的报告。然后再回来,一旦它恢复了。
基本上,你会收到一封电子邮件,报告“网站关闭”,然后再收到另一封,希望以后会报告“网站已启动”。
Pingdom为你做了这件事,做得很好。
发布于 2015-07-12 02:36:51
我一直在研究如何做到这一点,以便我可以激活/停用服务,这取决于我的手机是否在家里。我想出了以下几点:
#!/bin/bash
HOST_TO_CHECK=<hostname>
if ping -qc 20 $HOST_TO_CHECK >/dev/null; then
echo "Host $HOST_TO_CHECK is up"
else
echo "Host $HOST_TO_CHECK is down"
fi将替换为要检查的主机。
该脚本将ping主机20次。它这样做的原因是,我的手机并不总是立即响应ping。
显然,您可以将echo命令替换为实际执行一些有用的操作:-)
然后,您可以通过将脚本添加到您的crontab,将其安排为每5分钟检查一次:
*/5 * * * * /opt/pingcheck.shhttps://stackoverflow.com/questions/18258364
复制相似问题