Я использую компьютер под управлением Windows 10, к которому мне нужно иметь удаленный доступ, находясь вне дома. Я использую службу VPN на этом компьютере, и, если оставить ее на длительное время, соединение будет часто разрываться, приводя систему в состояние, когда VPN-клиент думает, что он все еще подключен, но это не так. Клиент никогда не пытается восстановить соединение, так как он считает, что он все еще подключен, и трафик, не относящийся к VPN, также блокируется (как своего рода непреднамеренный переключатель уничтожения). Это приводит к ситуации, когда непреднамеренное отключение отключает меня от удаленного доступа к компьютеру.

Моя конечная цель - автоматическая перезагрузка компьютера, когда Интернет кажется недоступным в течение более 5 минут, но я не знаю, как это сделать. Я был бы признателен, если бы кто-нибудь помог мне разработать сценарий, который перезагрузил бы компьютер в такой ситуации. Я не совсем знаком со сценариями cmd или powershell, но вот небольшой псевдокод, демонстрирующий процесс, который я ищу в сценарии, таким образом, чтобы его можно было запускать с помощью встроенных инструментов / программного обеспечения, включенного в мою ОС, например PowerShell или партия.

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

Я планирую запускать это как задачу, которая выполняется с 5-минутными интервалами в планировщике задач, если это возможно. Я бродил по Интернету (и этому сайту конкретно) в поисках решений, но не нашел ни одного для Windows, хотя нашел очень похожую реализацию для установок Linux (которые по совпадению также использовали DNS от Google в качестве теста, или, возможно, это просто зайдите на сайт для пинг тестов в общем ...).

1 ответ1

0

Я думаю, что-то вроде этого должно сделать свое дело

:: 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
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .