IPをpingし、500msを超えて経過したエラーの日付/時刻を表示し、失敗したパスを追跡するログを生成するスクリプト[閉じる]

IPをpingし、500msを超えて経過したエラーの日付/時刻を表示し、失敗したパスを追跡するログを生成するスクリプト[閉じる]

ping統計を示すログを生成するために継続的に実行されるスクリプトを作成しようとしています。 ping失敗、500ミリ秒以上のタイムアウト、タイムアウトのトレースパスをログに含めたいと思います。これは私のスクリプトです。

#!/bin/bash
ip=www.google.com
while [ 1 ]; do
ping -c 1 $ip 1> /dev/null
result=$?
if [ $result == "1" ]; then
echo FAIL on `date` >> ~/ping.log
echo FAIL on `date`.  Doing tracert!
traceroute $ip >> ~/ping.log
fi
if [ $result == "0" ]; then
echo SUCCEED on `date` >> ~/ping.log
echo SUCCEED on `date`
fi
sleep .4
done

このスクリプトを別のWebサイトからコピーしました。

答え1

一度見てみたいかもしれません平らなオプション-t:

-tn

最初の宛先タイムアウト(ミリ秒)(デフォルトは500)デフォルトモードでは、fpingが最初の要求への応答を待つ時間です。連続タイムアウトにバックオフ要素を掛けます。

以下を使用して、fping出力を解析せずに終了ステータスを確認できます。

IP=121.78.67.31; fping -c1 -t200 $IP || traceroute $IP

答え2

ワイヤー

ping -c 1 $ip 1> /dev/null

結果は削除されるため、pingが500ミリ秒以上かかったかどうかはわかりません。

使用

ping -c 1 $ip 1> /tmp/ping.txt

ping応答を維持した後

pingが成功したところで

awk -F/ 'NF>5 { if ( $5 > 500 ) exit 1 ; else exit 0 }'  /tmp/ping.txt

平均 ping が 500ms を超える場合、500 ms 未満では 0 を、平均 ping が 500ms を超えると 1 を与えます。


pingの結果は次のとおりです。

PING 172.18.15.22 (172.18.15.22) 56(84) bytes of data.
64 bytes from 172.18.15.22: icmp_seq=1 ttl=64 time=0.237 ms

--- 172.18.15.22 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.237/0.237/0.237/0.000 ms

わかりました

  • -F//を区切り記号として使用
  • NF>5少なくとも/を含む行を選択してください。
  • if ( $5 > 500 )テスト平均
  • exit 1 / exit 0正しい戻りコードを入力してください。

関連情報