gpt4 book ai didi

bash - Ping工具检查服务器是否在线

转载 作者:行者123 更新时间:2023-11-29 09:11:15 24 4
gpt4 key购买 nike

我从各种 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

最佳答案

你的代码根本行不通,这是修改后的版本:

#!/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

example@example.com192.168.1.1 更改为您的电子邮件地址和您正在测试的服务器的 IP 地址。我建议使用 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

关于bash - Ping工具检查服务器是否在线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18258364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com