PDA

Показать полную графическую версию : [решено] Скрипт автоматического переподключения VPN-соединения


DjGiza
07-12-2009, 21:28
Есть такой скрипт:

@echo off

:start
echo %date% %time%

echo Start...
echo Pinging...
ping 74.125.39.104 >dev.null && goto pinging || echo ping fault =^> Connect && goto dialing

:redialing
echo %date% %time% redialing >>redial.log
set ARG=0


:dialing
echo %date% %time%
set /a ARG=ARG+1

echo Disconnect to Ufanet...
rasdial "ufanet_local" /disconnect >dev.null //ufanet_local - имя соединение vpn на локал
rasdial "ufanet_freedom" /disconnect >dev.null //ufanet_freedom - имя соединение vpn на анлим

echo Disconnect to Local Area Connection...
devcon.exe disable КОД_СЕТЕВОЙ_КАРТЫ >dev.null //Для перезапуска сетевухи
echo sleep 1 sec...
sleep 1

echo Connect to Local Area Connection...
devcon.exe enable КОД_СЕТЕВОЙ_КАРТЫ >dev.null
echo sleep 20 sec...
sleep 20

echo %date% %time%
echo Dialing to Ufanet...
rasdial "ufanet_local" ЛОГИН ПАРОЛЬ && rasdial "ufanet_freedom" ЛОГИН ПАРОЛЬ && routing.vbs >dev.null && time /T && echo connected to "Ufanet" || goto dialing //соединение с vpn и запуск скрипта routing.vbs(анлим+локал)
echo %date% %time% Dialing %ARG% >>redial.log


:pinging
echo sleep 300 sec...
sleep 300

:start_pinging
echo %date% %time%
echo Pinging...
ping 74.125.39.104 >dev.null && goto pinging || echo ping fault =^> Retry Pinging && goto retry_pinging

:retry_pinging
echo sleep 120 sec...
sleep 120
echo %date% %time% Retry Pinging >>redial.log
echo Retry Pinging...
ping 74.125.39.104 >dev.null && goto pinging || echo ping fault =^> disconnect && goto redialing


Нужно немного его подкорректировать. А именно:
1. надо сделать чтобы окно всегда скрывался(а то в таком ввиде он всегда висит как окно).
2. каждые 5 мин. пингует гугл. Можно ли сделать без этого?

amel27
09-12-2009, 11:09
1. Скрытие консольных окон (http://www.oszone.net/6156).
2. Если убрать нарушится работа скрипта - пингом проверяется наличие инета.

Strema
06-02-2010, 02:28
Доброго времени суток!

Пользуюсь этим скриптом. Очень помогает при обрывах! (немного переделал его под свое подлючение и убрал перезапуск сетевухи).

Но есть одна проблемка. Частенько у провайдера какие-то непонятки с DNS. И в итоге Ping (и по IP и по именам) проходит нормально = redial не срабатывает.

Помогите пожалуйста к этому скрипту прикрутить (HTTP HEAD запрос) - проверку соединения по HTTP (например на Google.ru).

Заранее благодарен!

amel27
06-02-2010, 05:54
к этому скрипту прикрутить (HTTP HEAD запрос) - проверку соединения по HTTP (например на Google.ru) »
например, через утилиту CURL (http://curl.haxx.se/download.html) - заменить по тексту: ping 74.125.39.104 >dev.null на фрагмент
(curl -f -s -I http://www.google.ru | find " 200 OK" >nul)

Strema
07-02-2010, 02:37
amel27 Спасибо большое!!!

Скачал curl. И по фрагменту кода, того, что выше. Все работает. Он мне присылает заголовок сайта (без его содержимого). Это мне и надо было. Но я, честно говоря абсолютный чайник в написании скриптов. Разобраться как работает на готовом, это я еще могу. А вот приспособить эту строчку чтобы она при необнаружении HTTP ресурса делала redial... Чет нехватает мне :-(

Вот мой скрипт по пингу:

@echo off
cmdow @ /MIN

:start
echo %date% %time%

echo Start...
echo Pinging...
ping Google.ru >dev.null && goto pinging || echo ping fault =^> Connect && goto dialing

:redialing
echo %date% %time% redialing >>redial.log
set ARG=0


:dialing
echo %date% %time%
set /a ARG=ARG+1

echo Disconnect to Beeline...
rasdial Beeline /disconnect >dev.null //Beeline - имя соединение vpn на локал


echo %date% %time%
echo Dialing to Beeline...
rasdial Beeline 000xxxxxx@internet.beeline.ua xxxxxx >dev.null && time /T && echo connected to "Beeline" || goto dialing
echo %date% %time% Dialing %ARG% >>redial.log

echo sleep 60 sec...
sleep 60

:pinging
echo sleep 60 sec...
sleep 60


:start_pinging
echo %date% %time%
echo Pinging "Google.ru"...
ping Google.ru >dev.null || echo ping fault =^> Retry Pinging && goto retry_pinging

echo sleep 60 sec...
sleep 60

echo %date% %time%
echo Pinging "ya.ru"...
ping ya.ru >dev.null && goto pinging || echo ping fault =^> Retry Pinging && goto retry_pinging

:retry_pinging


echo %date% %time% Retry Pinging >>redial.log
echo Retry Pinging "ya.ru"...
ping ya.ru >dev.null && goto pinging || echo ping fault =^> disconnect && goto redialing


Ping я убирать не хочу. Иногда и по нему бывают неполадки.
Мне немного стыдно писать такие вопросы. Но, какую строку надо ввести, чтобы при неверном HTTP запросе у меня был redial ???
И при редиале это все сохранялось в лог-файле.

amel27
07-02-2010, 06:22
какую строку надо ввести, чтобы при неверном HTTP запросе у меня был redial ??? »
логику вашего скрипта с поочередным пингом двух адресов я не понял, для одного адреса где-то так:

:pinging
echo sleep 300 sec...
sleep 300

:start_pinging
echo %date% %time%
echo Pinging...
ping Google.ru >nul && (curl -f -s -I http://www.google.ru|find " 200 OK" >nul) &&^
goto pinging || echo ping fault =^> Retry Pinging && goto retry_pinging

:retry_pinging
echo sleep 120 sec...
sleep 120
echo %date% %time% Retry Pinging >>redial.log
echo Retry Pinging...
ping Google.ru >nul && (curl -f -s -I http://www.google.ru|find " 200 OK" >nul) &&^
goto pinging || echo ping fault =^> disconnect && goto redialing

Dr_Spectre
02-07-2013, 17:03
>dev.null нужно заменить на >NUL в винде перенаправление в нул звучит так.




© OSzone.net 2001-2012