CMD/BAT - [решено] Скрипт автоматического переподключения VPN-соединения

Ответить
Аватара пользователя
DjGiza

CMD/BAT - [решено] Скрипт автоматического переподключения VPN-соединения

Сообщение DjGiza »

Есть такой скрипт:



Код:

Код: Выделить всё

@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

Re: CMD/BAT - [решено] Скрипт автоматического переподключения VPN-соединения

Сообщение amel27 »

1.
Скрытие консольных окон
.

2. Если убрать нарушится работа скрипта - пингом проверяется наличие инета.
Аватара пользователя
Strema

Re: CMD/BAT - [решено] Скрипт автоматического переподключения VPN-соединения

Сообщение Strema »

Доброго времени суток!



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



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



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



Заранее благодарен!
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Скрипт автоматического переподключения VPN-соединения

Сообщение amel27 »

Цитата Strema:



к этому скрипту прикрутить (HTTP HEAD запрос) - проверку соединения по HTTP (например на Google.ru)
CMD/BAT - [решено] Скрипт автоматического переподключения VPN-соединения




например, через утилиту
CURL
- заменить по тексту:

Код:

Код: Выделить всё

ping 74.125.39.104 >dev.null

на фрагмент

Код:

Код: Выделить всё

(curl -f -s -I http://www.google.ru | find " 200 OK" >nul)
Аватара пользователя
Strema

Re: CMD/BAT - [решено] Скрипт автоматического переподключения VPN-соединения

Сообщение Strema »

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

Re: CMD/BAT - [решено] Скрипт автоматического переподключения VPN-соединения

Сообщение amel27 »

Цитата Strema:



какую строку надо ввести, чтобы при неверном HTTP запросе у меня был redial ???
CMD/BAT - [решено] Скрипт автоматического переподключения VPN-соединения




логику вашего скрипта с поочередным пингом двух адресов я не понял, для одного адреса где-то так:



Код:

Код: Выделить всё

: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

Re: CMD/BAT - [решено] Скрипт автоматического переподключения VPN-соединения

Сообщение Dr_Spectre »

>dev.null нужно заменить на >NUL в винде перенаправление в нул звучит так.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»