首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于检查服务器是否在线的Ping工具

用于检查服务器是否在线的Ping工具
EN

Stack Overflow用户
提问于 2013-08-16 01:37:52
回答 3查看 17.5K关注 0票数 4

我从各种SOF线程创建的这个工具有效吗?它会起作用吗?我想每分钟对服务器进行一次ping测试。如果它连续失败5次,它会发送一封电子邮件。然后,它刷新并重置脚本,以便再次检查。

代码语言:javascript
复制
#!/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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-19 11:45:02

你的代码根本不能工作,这是一个修订版:

代码语言:javascript
复制
#!/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.com192.168.1.1。我建议使用和IP地址而不是主机名,以防止名称解析错误与连接错误混淆。

请注意,虽然这将会工作,但我建议运行一个与cron稍有不同的脚本,而不是像您希望的那样连续运行,当从cron运行时,您不需要监视脚本是否正在运行,因为如果它由于某种原因停止,对服务器的监视也会停止。

每分钟从crontab运行类似这样的命令。

代码语言:javascript
复制
#!/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
票数 6
EN

Stack Overflow用户

发布于 2013-08-18 21:03:33

考虑使用Pingdom。它为您提供此服务。

您没有考虑到的一件事是,一旦您的站点关闭,您将继续每分钟收到电子邮件消息,直到站点重新启动,或者直到您停止此脚本。

一种很好的方法是,一旦检测到站点关闭,就将状态从站点关闭时的报告切换到站点运行时的报告。然后再回来,一旦它恢复了。

基本上,你会收到一封电子邮件,报告“网站关闭”,然后再收到另一封,希望以后会报告“网站已启动”。

Pingdom为你做了这件事,做得很好。

票数 0
EN

Stack Overflow用户

发布于 2015-07-12 02:36:51

我一直在研究如何做到这一点,以便我可以激活/停用服务,这取决于我的手机是否在家里。我想出了以下几点:

代码语言:javascript
复制
#!/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分钟检查一次:

代码语言:javascript
复制
*/5 * * * * /opt/pingcheck.sh
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18258364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档