繁体   English   中英

ping 测试 if-else 案例

[英]Ping Test If-else case

我想根据 Shell 脚本中的 ping 测试显示“单元 1 在线”或“单元 1 离线”。 但是,我找不到从 ping 测试的 output 中提取文本的标志或方法,以便将其与 if-case 语句一起使用以获得所需的 output。

    read -p "Enter the number of Units: " x
    for ((i=1; i<=$x; i++))
    do
        ping -c1 a.b.c."$i"
        if ping=success
            echo "Unit "$i" is online"
        else
            echo "Unit "$i" is offline"
        fi
    done

如果您使用的是标准的 GNU/Linux ping工具,那么手册说明

如果 ping 根本没有收到任何回复数据包,它将以代码 1 退出。如果同时指定了数据包计数和截止时间,并且在截止时间到达时收到的数据包少于计数,它也会以代码 1 退出。在其他错误中,它以代码 2 退出。否则,它以代码 0 退出。这使得可以使用退出代码来查看主机是否处于活动状态。

这意味着您可以从 shell 中的命令中捕获退出代码并打开它。 对于 bash:

if ping -c1 192.168.1."$i" ; then
    echo "Unit ${i} is online"
else
    echo "Unit ${i} is offline"
fi

或者作为单行使用|| &&

ping -c 192.168.1."$i" && echo "Unit ${i} is online" || echo "Unit ${i} is offline"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM