加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – Ping工具,用于检查服务器是否在线

发布时间:2020-12-15 21:33:34 所属栏目:安全 来源:网络整理
导读:我从各种SOF线程创建的这个工具是否有效?它会起作用吗?我希望每分钟都对服务器进行一次ping测试.如果它连续5次失败,它会发送一封电子邮件.然后它会刷新并重置脚本,以便再次检查. #!/bin/bash# ping checker toolnumOfFails=0incrememnt=1EMAILMESSAGE="/tm
我从各种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.com和192.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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读