インターネットの切断通知

インターネットの切断通知

5分間インターネット接続がないときにアラーム(PCスピーカー)を鳴らすことができるソフトウェアはありますか?

私のスイッチ/ルーターが数日に1回ずつ切断されているようです。

PC          -- TP-Link switch/router -- FO
192.168.x.1 -- 192.168.x.2 / x.y.z.a -- a.b.c.d

答え1

このスクリプトの変更されたバージョンを使用して目的の操作を実行できます。

#!/bin/bash

downTime=0
lastAccessTime=$(date +"%s")
while [ true ]; do
if ! ping -c1 google.com >& /dev/null; then
    downTime=$(( $(date +"%s") - $lastAccessTime ))
else
    downTime=0
    lastAccessTime=$(date +"%s")
fi

sleep 15

if [ $downTime -ge 300 ]; then
   echo "alert"
fi
done

「接続済み」の例

デバッグをオンにすると、スクリプトが実行する操作を確認できます。

set -x

「接続開始」ステータスを表示するために有効なホスト名で実行してください。

$ ./watcher.bash
+ downTime=0
++ date +%s
+ lastAccessTime=1402276955
+ '[' true ']'

上記は、複数の変数を初期化し、最後にループを実行した時間を決定します$lastAccessTime。今Googleにpingを試してみましょう。

+ ping -c1 google.com
+ downTime=0
++ date +%s
+ lastAccessTime=1402276955

$downTime$downTimepingが失敗した場合はダウンタイムを計算し、それ以外の場合は0にリセットして再計算します$lastAccessTime

+ sleep 15

今15秒待ちます。

+ '[' 0 -ge 300 ']'

5分(300秒)以上ダウンしていることを確認します。次にwhileループを繰り返し実行します。

+ '[' true ']'
+ ping -c1 google.com
+ downTime=0
++ date +%s
+ lastAccessTime=1402276970
+ sleep 15
....

開始するping限り、15秒ごとにコマンドを確認する以外は何も起こりません。

「接続が切れた」はい

「接続を閉じる」状態をシミュレートするために、pingするホスト名を偽のホスト名に変更しますgoogle1234567890.com。デバッグが有効な状態でスクリプトを繰り返し実行すると、計算された実際のダウンタイムが表示されます。

$ ./watcher.bash
+ downTime=0
++ date +%s
+ lastAccessTime=1402277506
+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=0
+ sleep 15
+ '[' 0 -ge 300 ']'
+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=15
+ sleep 15
...

これまでの時間は$downTime15秒と同じです。もう少し待つと、次のような結果が表示されます。

+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=300
+ sleep 15

300秒のダウンタイムが累積されました。これで確認すると、メッセージが印刷されますalert

+ '[' 300 -ge 300 ']'
+ echo alert
alert
+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=315
+ sleep 15

この状態は、接続が復元されping再び成功するまで続きます。

音はどうですか?

それは簡単です。これにはさまざまなツールを使用できます。接続が切断されたら、またはsox同じものを使用してmplayerオーディオファイルを再生します。たとえば、15秒ごとに聞きたい適切なサウンドを含むファイル.mp3またはファイルを再生します。.wav

mplayer someaudio.wav

alert接続が切断されたというオーディオフィードバックを受信するには、上記のメッセージをこの行に置き換えてください。

pingタイムアウトの問題

上記のように使用すると、接続が切断されると文字通り10〜20秒かかり、失敗する遅延ping時間が発生する可能性があります。ping次のタイトルのU&L Q&Aに対する私の回答をご覧ください。コマンドの出力をリダイレクトする方法は?たとえば、コマンドラインツールを使用しますfing。このツールは既存のツールよりも早く失敗しますping

答え2

Linuxを使用している場合は、次のスクリプトでpingを使用できますgoogle.com

counter=0
while [ true ]
do
ping -c 1 google.com > /dev/null 2>&1
if [ $? -ne 0 ] 
then
    let "counter +=1"
else
    let "counter = 0"
fi
if [ $counter -eq 300 ] # we assume that one ping need one second (300 is 5 minutes)
then
   echo "alert"
fi
done

関連情報