スクリプトは、設定された時間の間毎秒pingを実行し、設定された時間の間一時停止してから繰り返します。

スクリプトは、設定された時間の間毎秒pingを実行し、設定された時間の間一時停止してから繰り返します。

編集:私の結論は、この質問が間違った場所に投稿されたことです。私解放するMac OSの特定のフォーラムではすぐに答えが出ました。

場合によっては、インターネット接続の問題が約4秒間続き、約15秒で正常に戻って再び発生することがあります。私が聞いたところによると、この問題は一度に5〜7時間続く可能性があります。これをよりよく理解し、それをインターネットサービスプロバイダに伝えたいと思います。

これまで私は次のものを使用しました。

ping 8.8.8.8 | while read line; do echo `date` - $line; done

重要なことは、毎秒ピングタイムスタンプが含まれていることです。タイムスタンプを使用して結果をプロットするスクリプトがあります。しかし、問題が週に2〜3回だけ発生するため、不要なデータがたくさん収集され、整理する必要があります。

私が望むのは、設定された時間(たとえば5〜10分)の間毎秒pingを実行し、設定された時間(たとえば5〜10分)の間一時停止することです。命令があることを知ってsleepそれを試してみましたが、目標に達していませんでした。

答え1

間隔と収集のプロパティを変更できますping。ドキュメント(man ping)には多くの情報が含まれていますが、そこから始めることをお勧めします。

#!/bin/sh
target=1.1.1.1     # Ping target
delay=$((60*5))    # Seconds (5 minutes)

while :
do
    # Linux (GNU)
    # ping -4 -q -n -c3 -i1 -w4 "$target" >/dev/null 2>&1 && st=ok || st=error
    # Mac (OSX)
    ping -q -n -c3 -i1 -t4 "$target" >/dev/null 2>&1 && st=ok || st=error
    printf "%s - %s\n" "$(date)" "$st"
    sleep "$delay"
done

pingitのようなファイルに入れてchmod a+x pingit。それから./pingit

5分ごとに3回の連続pingを送信します。成功すると「正常」とみなされ、そうでなければ「エラー」と見なされます。

while … do別のオプションは、...loop設定を削除し、各ループで残りのdoneスクリプトを呼び出すことです。cron窒素分。

関連情報