我只是想写一个小脚本来查看某些IP地址是否在线作为我的想法的链接,我根本不知道什么,但我想知道是否任何人都可以帮助我。它的IP地址是2次,如果结果是
--- 127.0.0.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1007ms
我希望它echo "OFFLINE"
并继续ping下一个IP地址,如果结果是
--- 127.0.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
我希望echo "ONLINE"
继续使用下一个IP地址。
那么有没有办法获取ping的输出并使用它来确定回显的内容?
答案 0 :(得分:3)
您可以使用ping
的退出状态。如果它能够ping目标,它将返回0
(即成功),否则返回1。所以你可以做到
if ping -c 2 -q host1 &>/dev/null; then
echo "ONLINE"
else
echo "OFFLINE"
fi
但是如果要捕获命令的输出,可以使用命令替换,如
ping_output="$(ping -c2 host1)"
其中$(...)
内的命令输出将保存在变量中,此处命名为ping_output
或者如果您想使用grep
来查看字符串是否出现在输出中,您可以管道它:
if ping -c 2 host1 | grep -q " 0% packet loss"; then
echo ONLINE
else
echo OFFLINE
fi
我们使用-q
grep所以它不会打印匹配的行