Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Цитата 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

Отправлено: 21:45, 07-10-2010 | #22