![IPをpingし、500msを超えて経過したエラーの日付/時刻を表示し、失敗したパスを追跡するログを生成するスクリプト[閉じる]](https://linux33.com/image/65835/IP%E3%82%92ping%E3%81%97%E3%80%81500ms%E3%82%92%E8%B6%85%E3%81%88%E3%81%A6%E7%B5%8C%E9%81%8E%E3%81%97%E3%81%9F%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AE%E6%97%A5%E4%BB%98%2F%E6%99%82%E5%88%BB%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%80%81%E5%A4%B1%E6%95%97%E3%81%97%E3%81%9F%E3%83%91%E3%82%B9%E3%82%92%E8%BF%BD%E8%B7%A1%E3%81%99%E3%82%8B%E3%83%AD%E3%82%B0%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
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
正しい戻りコードを入力してください。