pingの結果を時間ごとにフィルタリングする方法は?

pingの結果を時間ごとにフィルタリングする方法は?

特定のミリ秒未満のpingをフィルタリングするにはどうすればよいですか?つまり、500ミリ秒より古いPing応答だけをテキストファイルにエコーさせることができますか?

IP=$1
SECONDS_Between_Pings=$2

ping -i $2 $1 | while read pong; do echo $(date) $pong; done >> ~/Downloads/pings_file_$(date +%Y-%m-%d).txt

ベストアンサー1

grep拡張正規表現を使用してください。

ping ... | grep --line-buffered -E 'time=([0-9]{4}|[5-9][0-9]{2})' | ...

これは次の行と一致しますtime=

  • 4桁の数字(1000+ミリ秒)。
  • 5〜9の1桁の数字の後に、任意の2桁の数字(500〜999ms)が続きます。

--line-buffered解決するgrep基本出力バッファリングによる問題パイプラインチェーンに使用される場合。 grepがパイプラインチェーンの最後のリンクである場合は必要ありません。

おすすめ記事