watchdog de conexão com a Internet

2

Para resolver alguns problemas com algumas conexões de banda larga móvel 2G / 3G não confiáveis, eu gostaria de configurar um serviço automático para forçar a reinicialização da própria interface de rede ou de todo o computador quando a conexão com a Internet estiver inoperante. número de horas. Isso automatizaria o que até agora temos feito manualmente para restaurar as conexões.

Esse utilitário existe para o Windows 8 e, se não, como eu posso roteirizar essa tarefa?

Para um pouco de contexto, temos instalado um conjunto de computadores em locais inacessíveis como meio de monitorar remotamente as instalações de um sistema que está sendo testado. De qualquer forma, estes são netbooks simples do Windows 8 executando um programa de registro / configuração e são tipicamente conectados através de dongles 2G / 3G.

Infelizmente, por alguma razão, essas conexões tendem a ser um pouco desonestas e desistem depois de alguns meses, exigindo uma reinicialização manual. O ISP tem sido de pouca ajuda, essencialmente alegando que seu equipamento de consumo moderno não é projetado para este tipo de aplicação (justo o suficiente), mas também incapaz de sugerir quaisquer alternativas.

Para ser justo, parece haver dispositivos industriais de modem / roteador disponíveis no mercado, embora a diferença de preço de ordem de magnitude e o fato de que os sistemas já tenham sido instalados me faça buscar soluções fáceis.

Por último, eu não sou um "superusuário" e esta é a minha primeira pergunta ou atividade de qualquer tipo aqui, então eu peço desculpas se isso é fora do tópico ou uma pergunta que já foi respondida.

    
por doynax 11.03.2014 / 14:54

2 respostas

2

Você pode escrever um script em lote que pinga algum site que quase nunca está inativo (Google!) e você pode detectar se sua internet está trabalhando com esse script. Uma vez que a parte de detecção é feita, é realmente fácil reiniciar o PC ou uma conexão dial-up do arquivo de lote. Aqui está o meu script de exemplo:

@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
    
por 11.03.2014 / 17:08
0

Para registro, aqui está o script que eu acabei fazendo depois de mexer com a solução do tumchaaditya.

Ainda não foi acionado em estado selvagem, mas parece funcionar quando testado. Eu irei corrigir este post assim que o fizer.

Em teoria, o consumo de largura de banda dos pings contínuos será de cerca de 1,5 GB / ano, portanto, um teste periódico pode ser preferível. No entanto, meu ISP afirma contar apenas bytes reais de carga útil e espero que a atividade contínua sirva como keepalive.

@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

Observe que reiniciar a interface de rede requer privilégios administrativos (curiosamente, a reinicialização da máquina não.)

Tenha também em atenção que o estado de saída de ping aparentemente ainda é 0 para qualquer sistema não responsivo na mesma sub-rede.

Eu estava com preguiça de investigar como configurar um daemon apropriado para que eu confessasse a execução do script criando um link para ele no início automático, configurando a conta para fazer logon automaticamente, marcando o link para ser executado como administrador e desabilitar o UAC.

    
por 19.03.2014 / 15:43