我想在Shell脚本中根据ping测试显示“Unit 1 is online”或“Unit 1 is offline”。但是,我找不到一个标志或方法来从ping测试的输出中提取文本,以便将其与if-case语句一起使用来获得所需的输出。
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
2条答案
按热度按时间dzjeubhm1#
如果您使用的是标准的GNU/Linux
ping
工具,则the manual states:如果ping根本没有收到任何应答数据包,它将退出,代码为1。如果同时指定了数据包计数和截止时间,并且截止时间到达时收到的数据包少于计数,它也将退出,代码为1。出现其他错误时,它将退出,代码为2。否则,它将退出,代码为0。这样就可以使用退出代码来查看主机是否处于活动状态。
这意味着您可以在shell中捕获命令的退出代码并打开它。
或者使用
||
和&&
作为一行程序:xu3bshqb2#
也许这可以帮助你,处理你的东西。在下面的例子中,我正在执行一个系统的重新启动,如果目标是不可达的。