ping 时是否可以只显示毫秒数而不是整个结果页面?
我想检查我的服务器是否在线,所以我想返回“OK xyz ms”或“FAIL”。我目前正在这样做:
#!/bin/sh
ergebnis=$(ping -qc1 google.com)
ok=$?
avg=$(echo -e "$ergebnis" | tail -n1 | awk '{print $4}' | cut -f 2 -d "/")
if [ $ok -eq 0 ]
then
echo "OK $avg ms"
else
echo "FAIL"
fi
但是,这使用了很多管道,并且由于我经常运行此命令来监视我的服务器,我想知道是否有“更智能”的方法。我还担心当 ping 命令失败时我的管道可能无法正常工作。
另一种
awk
变化:-F'/'
- 将斜杠/
视为字段分隔符示例输出:
你可以用它自己做的不多
ping
,但你可以在 AWK 中完成所有处理,减少管道、进程等的数量:如果您不太关心确切的错误消息,那么如何
如果您只想要状态(而不是毫秒等),您就可以
if
了。这适用于我的用例: