web-dev-qa-db-ja.com

インターネット接続ウォッチドッグ

信頼性の低い2G/3Gモバイルブロードバンド接続の問題を回避するために、インターネット接続が一定時間ダウンした後、ネットワークインターフェイス自体またはコンピューター全体を強制的に再起動する自動サービスを設定したいと思います。 。これにより、これまで手動で行っていた接続の復元が自動化されます。

そのようなユーティリティはWindows8に存在しますか?存在しない場合、どのようにそのようなタスクをスクリプト化できますか?


少し状況を説明するために、テスト対象のシステムのインストールをリモートで監視する手段として、アクセスできない場所に一連のコンピューターをインストールしてきました。とにかく、これらはロギング/構成プログラムを実行するプレーンな古いWindows 8ネットブックであり、通常は2G/3Gドングルを介して接続されます。

残念ながら、何らかの理由でこれらの接続はかなり危険で、数か月後にドロップアウトする傾向があり、手動で再起動する必要があります。 ISPはほとんど役に立たず、基本的に、最新の消費者向け機器はこのタイプのアプリケーション向けに設計されていない(十分に公平である)と主張していますが、代替案を提案することもできません。

公平を期すために、市場には産業用モデム/ルーターデバイスがありますが、桁違いの価格差とシステムがすでにインストールされているという事実から、簡単な解決策を探しています。

最後に、私は「スーパーユーザー」ではありません。これは、ここでの私の最初の質問またはアクティビティです。これがトピックから外れている場合、またはすでに回答済みの質問である場合は、お詫び申し上げます。

2
doynax

ほとんどダウンしないWebサイト(Google!)にpingを送信するバッチスクリプトを記述して、インターネットがそのスクリプトで機能しているかどうかを検出できます。検出部分が完了すると、バッチファイルからPCまたはダイヤルアップ接続を再起動するのは本当に簡単です。これが私のサンプルスクリプトです:

@echo off
:begin
ping www.google.com | find "Reply" > nul
if errorlevel 1 goto :failed
goto :OK

:failed
echo Failed
choice /T 3600 /D Y /N
rasdial <dial-up connection name> <username> <password>
goto begin

:OK
echo OK
goto begin
2
tumchaaditya

ここでの記録は、tumchaadityaのソリューションをいじくり回した後に私が最終的に作成したスクリプトです。

まだ実際にはトリガーされていませんが、テストすると機能するようです。修正したら、この投稿を修正します。

理論的には、継続的なpingによる帯域幅の消費量は合計で約1.5 GB /年になるため、定期的なテストが望ましい場合があります。ただし、私のISPは実際のペイロードバイトのみをカウントすると主張しており、継続的なアクティビティがキープアライブとして機能することを期待しています。

@echo off
set INTERFACE="Local Area Connection"
set TIMEOUT=3600
set IP=8.8.8.8
set LOG="watchdog.log"

echo %DATE% %TIME%: Watchdog started >> %LOG%

:loop
rem First check the interface for an hour by pinging the Google DNS
rem and resetting the networking interface if it should fail.
ping -n %TIMEOUT% -w 1000 -l 0 %IP%
if %errorlevel% NEQ 1 goto :loop
echo %DATE% %TIME%: Connection failed. Restarting interface.. >> %LOG%
netsh interface set interface %INTERFACE% disable
netsh interface set interface %INTERFACE% enable

rem Give it another shot but restart the whole computer if it the communication should still fail
ping -n %TIMEOUT% -w 1000 -l 0 %IP%
if %errorlevel% NEQ 1 goto :loop
echo %DATE% %TIME%: Still no connection. Restarting computer.. >> %LOG%
shutdown /r /c "Internet wathchdog"

echo %DATE% %TIME%: Waiting for system to shut down >> %LOG%
choice /T %TIMEOUT% /D Y /N > NUL
echo %DATE% %TIME%: Gave up on the shut down attempt. Trying again.. >> %LOG%
goto :loop

ネットワークインターフェイスを再起動するには管理者権限が必要であることに注意してください(不思議なことに、マシンを再起動する必要はありません)。

また、同じサブネット上の応答しないシステムでは、pingの終了ステータスが明らかに0のままであることに注意してください。

適切なデーモンを設定する方法を調査するのが面倒だったので、自動起動でスクリプトへのリンクを作成し、アカウントを自動的にログオンするように設定し、リンクを管理者として実行するようにマークして、スクリプトの実行を告白する必要があります。 UACを無効にします。

0
doynax