FreeBSD shのping時間の比較

FreeBSD shのping時間の比較

pingの戻り時間を削除する方法は?たとえば、

64 bytes from 10.3.0.1: icmp_seq=0 ttl=63 time=2.610 ms

time=私はその値を取り、次のようなテストに渡したいと思います。

if time>=50.0; then do_something; fi

ベストアンサー1

したがって、ラベルなしtimeで値のみを取得するには、次のようにします。ms

HOST="127.0.0.1"
PING_MS=`ping -c1 "$HOST" | /usr/bin/awk 'BEGIN { FS="=" } /time=/{gsub(/ ms/, ""); print $NF; exit}'`

これは私に次のことを与えます:

0.058

POSIX自体は10進数を比較できないため、これが利用可能かどうかをテストするには、time>=50.0次の手順を実行します。awksh

if echo $PING_MS | awk '{exit $1>=50.0?0:1}'; then
    echo "Ping time is >= 50.0ms."
fi

次のように短縮できます。

if ping -c1 "$HOST" | /usr/bin/awk 'BEGIN { FS="=" } /time=/{gsub(/ ms/, ""); exit $NF>=50.0?0:1}'; then
    echo "Ping time is >= 50.0ms."
fi

FSフィールド区切り文字で、$NF常に最後のフィールドです。最後のフィールドが次の場合、成功した$NF>=50.0?0:1終了コードで終了します。>=50.0それ以外の場合はエラー終了コードを返します。が文字列から削除された/time=/場合にのみ一致します。time=gsub(/ ms/, "");" ms"

おすすめ記事