[英]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.