Jak zrestartować komputer, gdy moja sieć się zawiesi?

0

Korzystam z komputera z systemem Windows 10, do którego muszę mieć zdalny dostęp poza domem. Korzystam z usługi VPN na tym komputerze, a kiedy jest włączony przez dłuższy czas, połączenie często zrywa się, co powoduje, że system przechodzi w stan, w którym klient VPN uważa, że ​​jest nadal podłączony, ale nie jest. Klient nigdy nie próbuje połączyć się ponownie, ponieważ uważa, że ​​jest nadal połączony, a ruch inny niż VPN jest również blokowany (jak swego rodzaju niezamierzony przełącznik zabicia). Powoduje to sytuację, w której niezamierzony wyłącznik awaryjny uniemożliwia mi zdalny dostęp do mojego komputera.

Ponowne uruchomienie komputera automatycznie, gdy Internet wydaje się nieosiągalny przez okres dłuższy niż 5 minut, jest moim ostatecznym celem, ale nie jestem pewien, jak sobie z tym poradzić. Byłbym wdzięczny, gdyby ktoś mógł mi pomóc zaprojektować skrypt, który uruchomiłby ponownie komputer w takiej sytuacji. Nie jestem do końca zaznajomiony ze skryptami cmd lub PowerShell, ale oto mały pseudokod pokazujący proces, w którym szukam skryptu, w taki sposób, że można go uruchomić za pomocą wbudowanych narzędzi / oprogramowania dołączonego do mojego systemu operacyjnego, np. PowerShell lub partia.

// 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
}

Jeśli to możliwe, planuję uruchomić to jako zadanie uruchamiane w 5 minutowych odstępach w harmonogramie zadań. Grzebałem w Internecie (a konkretnie na tej stronie), szukając rozwiązań, ale nie znalazłem żadnego dla Windows, chociaż znalazłem bardzo podobną implementację dla konfiguracji Linuxa (która przypadkowo używała również DNS Google'a jako testu, a może to tylko przejdź na stronę ogólnie po testy ping ...).

Mateusz
źródło
Dlaczego po prostu nie włączyć pakietów utrzymywania aktywności w kliencie VPN?
Daniel B
@Daniel B To może być łatwiejsze, jeśli klient ma taką opcję, ale nie ma. Korzystam z oficjalnego klienta TigerVPN. TigerVPN JEST kompatybilny z GUI OpenVPN, ale nawet z wtyczką wycieku DNS nadal dostaję sporadyczne wycieki podczas korzystania z niej.
Matthew

Odpowiedzi:

0

Myślę, że coś takiego powinno wystarczyć

:: 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
)
Berend
źródło