![]() |
Скрипт для выбора VPN
Здравствуйте! Есть подключение по L2TP VPN и PPTP VPN. Не могли бы Вы мне подсказать скрипт, позволяющий автоматически подключать один из работающих видов подключения (а если ни один недоступен, то циклически пробовать подключение к каждому из них), а так же в случае падения подключения имеющий возможность также переподключения на одно из работающих?
На данный момент воспользовался rasdial, но как с нее информацию об ошибке при подключении взять? |
вариант а) проверить errorlevel
вариант б) попинговать яндекс |
А как это будет выглядеть в виде скрипта? Просто я домашний пользователь, которому нужен постоянный интернет.
|
в идеале надо решать вопрос с провайдером, а не писать скрипты
ping ya.ru | find "TTL" if !errorlevel!==0 ( echo Интернет есть ) else ( echo Интернета нет ) |
Спасибо за помощь! С провайдером решать не получается, поскольку интернет поставляется "как есть" бесплатно институтом.
Вроде навеял что-то, подскажите если что не так @Echo off echo Delay 1 minutes for system full start echo System started %date% %time% >> c:/restart.log :connL2TP sleep 60 rasdial L2TP user pass sleep 10 echo Testing Internet connection.... ping ya.ru > nul if ErrorLevel 1 goto connPPTP goto standby :connPPTP sleep 60 rasdial PPTP user pass sleep 10 echo Testing Internet connection.... ping ya.ru > nul if ErrorLevel 1 goto connL2TP goto standby :standby sleep 1800 echo Testing Internet connection.... ping ya.ru > nul if ErrorLevel 1 goto restart goto standby :restart echo Restarting.... echo =============================================== >> c:/restart.log echo Internet connection lost %date% %time% >> c:/restart.log echo =============================================== >> c:/restart.log goto connL2TP Но еще вычитал рекомендуют пользоваться так утилитой ping ввиду большей надежности ping ya.ru |>nul find /i "TTL=" && echo Интернет - ок Но что-то непонятен ее процесс, не могли бы пояснить на примере адаптации к моему случаю? |
Вопрос актуален..... :)
|
а что не работает?
|
Просто писали, что не всегда корректно проверяет при таком использовании команды ping. А пока не довелось проверить скрипт в деле, хотелось бы чтобы более опытные люди подсказали, что бы не возникло проблем при обрыве. Или может быть в данной ситуации есть какие-то стандартные отработанные решения, которые я не реализовал.
|
Цитата:
При использовании: Цитата:
А при использовании ping ->ErrorLevel то в случае когда не подключен кабель, или заблокировано он не всегда возвращает ненулевой errorlevel. Поэтому и считается, что обработка по "TTL=" более точная. |
не помешает еще rasdial /disconnect
Ну и вообще с логикой в скрипте проблемы начинать надо не с установки соединения, а с проверки интернета |
Molchune, Тоесть после двух амперсандов выполняется код в строке, если есть "TTL=". А если нет, то просто переход на новую строку?
CyberMuesli, Кстати да, действительно, надо еще отключать, забыл, спасибо. А по поводу логики установки - скрипт должен запускаться с компьютером и, соответственно, интернет еще не запущен. |
Цитата:
|
Цитата:
Вы расчитываете на особые условия, а это дополнительный усложняющий (а значит и глючный) фактор. Это как программист говорит - вот в этом месте я не буду переменную инициализировать, т.к. всё равно после работы вот этого цикла она имеет вот такое значение, а мне оно как раз и нужно. Вам все равно придется снимать этот скрипт с выполнения, запускать его вручную и так далее. Просто измените его логику на универсальную. И Вам не придется помнить, при каких условиях он правильно работает и соблюдать эти условия. Попробуйте всё упрощать, а не усложнять. Вам понравится, обещаю |
CyberMuesli, Понятно, спасибо,
|
Значит я опробовал скрипт в деле. Оказывается он не знает команды sleep.
|
это точно
|
Оказывается в Windows 7 появилась замечательная команда timeout. Всем спасибо за помощь, все отлично работает!
|
Время: 08:26. |
Время: 08:26.
© OSzone.net 2001-