Цитата PERMYAK:
Есть интернет соединение по РРРОЕ, иногда бывает такое, что соединение есть, а интернета и пинга нет. »
|
Этот скрипт должен помочь. Подключается к серверу (в случае неудачи ждёт и снова пытается), как только соединение установлено - периодически пингует заданный сайт, если пинг не проходит (пропал интернет) - принудительно разрывает подключение и подсоединяется заново. Все настройки вынесены в переменные вверху. Пароль и логин хранятся в скрипте, если к компьютеру имеете доступ не только вы - это небезопасно.
Код:

@Echo Off
Rem Максимальное число реконнектов при потере сервера
Set /A Reconnect="6"
:Main
Rem Имя вашего соединения (скопируйте из "Сетевые подключения")
Set Connection="Sevenline VPN-6"
Rem Имя пользователя
Set User="inquisitor"
Rem Пароль
Set Pass="*********"
Rem Максимальное кол-во попыток подключения
Set Max="10"
Rem Здесь устанавливаем адрес сайта, по доступности к которому будем проверять наличие интернета. К примеру - 209.85.229.104 - google
Set Site=209.85.229.104
Rem Таймаут между проверками (секунды)
Set TimeOut=120
Set /A TimeOut=TimeOut*1000
Rem Устанавливаем время ожидания до повторного подключения (секунды)
Set RetryTime=300
Set /A RetryTime=RetryTime*1000
Set NC=".\bin\nc.exe"
Set /A i="0"
:Loop
Echo.
Echo Идет соединение с %Connection%...
Echo Попытка #%i%
RasDial %Connection% %User% %Pass% 2>Nul 1>&2
If %ErrorLevel% GTR 0 (
Echo Ошибка при соединении с %Connection%, подключаемся заново.
Set /A i="i + 1"
If "%i%" == %Max% GoTo Fail
GoTo Loop
) Else (
Echo.
Echo Соединено.
Echo.
Echo.
%NC% Wait 15000
GoTo Watch
)
:Fail
Echo.
Echo.
Echo.
Echo Соединится с %Connection% не удалось.
Echo.
Echo Ждём и пробуем ещё раз (осталось %Reconnect% попыток).
%NC% Wait %RetryTime%
Set /A Reconnect="Reconnect - 1"
If "%Reconnect%" LEQ "0" Echo Число попыток соединения исчерпано&GoTo EOF
GoTo Main
:Watch
Set /A t="0"
:ReCheck
Ping -n 1 %Site%>nul
Set /A t="t + 1"
Echo [%date% - %time:~-0,8%] Проверка соединения #%t%
If %ErrorLevel% GTR 0 (
Echo Соединение %Connection% недоступно, попытка переподключения...
RasDial %Connection% /DISCONNECT
GoTo Main
) Else (
Echo Соединение %Connection% доступно.
%NC% Wait %TimeOut%
GoTo ReCheck
)
:EOF
UPD: Забыл добавить - скрипт требует консольную версию утилиты NirCmd (для организации задержки), создайте рядом со скриптом папку bin и поместите туда exe-файл NirCmd, переименовав его в nc.exe