Mude o TIMEOUT para 30. Isso fará com que execute a redefinição se a conexão tiver sido interrompida por 30 segundos. Caso contrário, ele deve estar inativo por 3600 segundos (1 hora).
Além disso, você não deve usar o 8.8.8.8 para esse propósito. Em vez disso, você deve usar o endereço IP do seu gateway encontrado com ipconfig
. Se você usa um IP externo como o 8.8.8.8, seu computador irá redefinir sua conexão e até mesmo reiniciar seu computador se algo como sua internet simplesmente cair.
Ao usar um IP interno como o endereço do seu gateway, ele só será reinicializado ou reinicializado quando a conexão Wi-Fi estiver desativada.
Além disso, você pode executar isso como uma tarefa agendada para executar com privilégios mais altos como nt authority\system
na inicialização do computador. Mas, eu mudaria o tempo limite para algo um pouco mais longo, como 300 segundos, porque o script pode ser executado antes que sua pilha de rede esteja totalmente operacional.
EDITAR: Como afirmado nos comentários, o script publicado na pergunta simplesmente não funciona. O problema com o script original é que o comando ping pode retornar uma "Resposta de xxx.xxx.xxx.xxx: Host de destino inacessível", que resulta em um nível de erro "bem-sucedido".
Abaixo está um script atualizado que funciona e altera a lógica para que ele detecte com mais eficácia uma conexão inativa. Também removi a parte que reiniciava o computador - sinto que isso é desnecessário e potencialmente problemático. Observe que não haverá saída na tela deste comando quando ele estiver em execução. Certifique-se de que o nome correto da interface de rede tenha sido obtido usando o comando netsh interface show interface
.
@echo off
REM Modified by Appleoddity - 10/11/2017
REM Fixed ping status check; Removed shutdown/reboot ability; Improved logging
REM This script MUST RUN AS ADMIN
REM
REM Obtain network interface name with 'netsh interface show interface'
REM
REM Change the INTERFACE; THRESHOLD; IP; and LOG variables below.
REM Note: THRESHOLD is not necessarily the number of seconds before reset - but close
REM
setlocal EnableDelayedExpansion
set INTERFACE="Wi-Fi"
set THRESHOLD=30
set IP=10.1.10.1
set LOG="watchdog.log"
echo %DATE% %TIME%: Watchdog started >> %LOG%
SET /A COUNT=0
REM Loop until <THRESHOLD> failed, consecutive pings are counted
:LOOP
ping -n 1 -w 1000 -l 0 %IP% | find /i " bytes=" >NUL 2>&1
if errorlevel 1 (
set /A COUNT+=1
echo %DATE% %TIME%: Failed ping detected - Count = !COUNT!. >> %LOG%
) ELSE (
set /A COUNT=0
REM Pause
ping -n 2 -w 1000 -l 0 127.0.0.1 >NUL 2>&1
)
if %COUNT% GEQ %THRESHOLD% (
echo %DATE% %TIME%: %THRESHOLD% failed pings exceeded. >> %LOG%
GOTO RESET
)
GOTO LOOP
REM Reset the network interface
:RESET
echo %DATE% %TIME%: Restarting network interface - %INTERFACE% >> %LOG%
netsh interface set interface "%INTERFACE%" admin=DISABLED >NUL 2>&1
netsh interface set interface "%INTERFACE%" admin=ENABLED >NUL 2>&1
SET /A COUNT=0
GOTO LOOP