Como reinicializar um computador quando minha rede parar?

0

Estou executando um computador com Windows 10 que preciso poder acessar remotamente quando estiver fora de casa. Eu uso um serviço VPN neste computador e, quando deixado por longos períodos de tempo, a conexão geralmente cai, colocando o sistema em um estado em que o cliente VPN pensa que ainda está conectado, mas não está. O cliente nunca tenta se reconectar, pois acredita que ainda está conectado, e o tráfego não-VPN também é bloqueado (como um tipo de interruptor não intencional). Isso resulta em uma situação em que um interruptor não intencional impede que eu acesse meu computador remotamente.

A reinicialização do computador automaticamente quando a Internet parece inacessível por um período superior a 5 minutos é o meu objetivo final, mas não tenho certeza de como fazer isso. Eu apreciaria se alguém pudesse me ajudar a projetar um script que iria reiniciar o computador neste tipo de situação. Eu não sou tão familiarizado com o script cmd ou powershell, mas aqui está um pequeno pseudocódigo demonstrando o processo que estou procurando para o script, de uma forma que possa ser executado com as ferramentas / softwares incluídos no meu sistema operacional, por exemplo. PowerShell ou lote.

// Note- PSEUDO-CODE, NOT A USABLE SCRIPT AS-IS
ping 8.8.8.8 // check for internet connection. 0% packet returns would indicate the computer had probably entered this network lock-up
if pingsReturned == 0
{
    wait 5 minutes // in case of temporary disconnect, give the network time to reestablish itself
    ping superuser.com // alternate site used to confirm google isn't the only site I can't connect to, i.e. google is down, not my network connectivity
    if pingsReturned == 0
        shutdown /f /r /t 60 /c "Rebooting due to connection issues." 
    else
    {
        exit
    }
}
else
{
    exit
}

Eu planejaria executar isso como uma tarefa executada em intervalos de 5 minutos no agendador de tarefas, se possível. Eu pesquisei pela internet (e especificamente neste site) procurando por soluções, mas não encontrei nenhuma para o Windows, embora eu tenha encontrado uma implementação muito semelhante para as configurações do Linux (que coincidentemente também usou o DNS do Google como teste, ou talvez seja apenas uma ir ao site para testes de ping em geral ...).

    
por Matthew 08.09.2016 / 09:05

1 resposta

0

Eu acho que algo assim deveria fazer o truque

:: ping google
ping www.google.com -n 1 | find "TTL=" >nul
if errorlevel 1 (
    :: wait 60 seconds
    ping 127.0.0.1 -n 60 > nul

    :: ping another
    ping www.facebook.com -n 1 | find "TTL=" >nul
    if errorlevel 1 (
        echo Rebooting...
        shutdown /r
    ) else (
        echo We're back up again
    )
) else (
    echo We're up
)
    
por 08.09.2016 / 09:23