完全な結果ページではなく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コマンドが失敗した場合、パイプラインが正しく機能しない可能性があるという懸念もあります。
ベストアンサー1
その他awk
多様性:
ping -qc1 google.com 2>&1 | awk -F'/' 'END{ print (/^rtt/? "OK "$5" ms":"FAIL") }'
-F'/'
- スラッシュを/
フィールド区切り記号として扱う
出力例:
OK 47.090 ms