首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >平安测试

平安测试
EN

Stack Overflow用户
提问于 2020-08-01 18:13:05
回答 2查看 1.9K关注 0票数 0

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

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-01 18:58:15

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

如果ping完全没有收到任何回复数据包,那么它将使用代码1退出。如果指定了数据包计数和截止日期,并且在截止日期到来之前收到的数据包少于计数数据包,则它也将退出代码1。如果出现其他错误,则退出代码2。否则退出时使用代码0。这样就可以使用退出代码来查看主机是否还活着。

这意味着您可以从shell中的命令中捕获退出代码并打开该命令。为巴什:

代码语言:javascript
复制
if ping -c1 192.168.1."$i" ; then
    echo "Unit ${i} is online"
else
    echo "Unit ${i} is offline"
fi

或者使用||&&作为一条直线。

代码语言:javascript
复制
ping -c 192.168.1."$i" && echo "Unit ${i} is online" || echo "Unit ${i} is offline"
票数 1
EN

Stack Overflow用户

发布于 2022-10-11 19:31:11

也许这能帮你处理你的东西。在下面的示例中,如果无法到达目标,我将执行系统的重新启动。

代码语言:javascript
复制
#!/bin/bash

# Set target host IP or hostname
TARGET_HOST='10.8.0.1'

count=$(ping -c 3 $TARGET_HOST | grep from* | wc -l)

if [ $count -eq 0 ]; then
    echo "$(date)" "Target host" $TARGET_HOST "unreachable, Rebooting!" >>/var/log/openvpn_connection_check.log
    /sbin/shutdown -r 0

else
    echo "$(date) ===-> OK! " >>/var/log/openvpn_connection_check.log
fi
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63208550

复制
相关文章

相似问题

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