VPN: Автостарт

VPN: Автостарт

Создание batch (.bat) файла

Batch или bat-фэйл - это небольшая программка, состоящая из консольных команд операционной системы. Многие команды перекочевали в Windows ещё из старенькой MS-DOS, но по-прежнему верно служат тем пользователям, которые умеет ими пользоваться.
Включение VPN можно осуществлять через автозапуск при каждом старте ОС. Достаточно написать небольшой скрипт программы. Этим сейчас и займёмся.
Простейшим решением напрашивается консольная команда: rasdial.exe vpn_name login password
Команда может быть набрана в любом текстовом редакторе (скажем, в Блокноте), и сохранена в файл с именем, например, "vpn_start.bat". Для быстрого поиска сохраним этот файл на диске С:. Давайте разберём эту строку по-порядку.
rasdial.exe - это системная утилита находится в системной папке C:\Windows\ System32. По своей сути, это интерфейс связи из командной строки для клиента службы удаленного доступа - так характеризуется она компанией Microsoft.
При её использовании можно закрывать Интернетсоединение нажатием пары горячих клавиш. Разрыв связи происходит мгновенно, что может сэкономить средства не только на трафике, но и на телефонном счету (актуально тем, у кого Dial-up). К тому же, это просто очень удобно.
Для того, чтобы воспользоваться этой функцией, необходимо в контекстном меню рабочего стола выбрать пункт Создать > Ярлык. Когда ОС попросит указать размещение объекта, необходимо описать следующий путь к файлу утилиты и добавить ключ
"/disconnect" :%windir%\sys- tem32\rasdial.exe/disconnect.
Более детальное описание этой утилиты поищите в сети. Ну, а в данном случае, будем говорить о создании соединения.
vpn_name - первый параметр должен содержать имя уже созданного VPN-соединения. Если название содержит, например, пробел, то название лучше заключить в двойные кавычки.
login и password - далее указываются логин и пароль.
После этого, если кабельное соединение уже установлено, но VPN-соединения ещё нет, то дос-таточно запустить созданный нами файл vpn_start.bat через Проводник (файловый менеджер) или по его ярлыку и VPN тут же включится.
Недостаток такого решения в том, что попытка включения VPN в нём выполняется лишь раз, и если при автозапуске наша консольная команда выполнится немного раньше, чем будет включено кабельное соединение, то мы потерпим неудачу.


VPN: Автостарт


Умный стартёр для VPN

Давайте же определимся с нашей задачей. Прежде всего, нам необходимо отследить момент включения кабельного соединения, попросту дождаться его, затем попытаться включить VPN. Тогда могу предложить следующий скрипт:
@echo off
set name="Sarlink VPN"
set login=mylogin
set passwd=mypassword
set timeout=10
set count=0
: pinging
echo Waiting%timeout% sec...
ping 0.0.0.0 -w 1000 -n%timeout% > nul
: dialing
set/a count=count+1
echo Connecting...try%count%-i
rasdial%name%%login%%pass wd% > nul && echo Connected, goto pinging
echo DONE.
Набираем текст этого скрипта в Блокноте, сохраняем в файл vpn_start.bat, созда¬ём ярлык для него и помещаем ярлык в Пуск > Программы > Автозагрузка. Всё, дело сделано.
При очередной загрузке операционист системы откроется окошко с выполняющимся нашим скриптом, который дождётся благоприятных условий для включения VPN - и вот мы в Интернете без лишних усилий.

Разбор полётов
Собственно, описанного выше достаточно, и даннус часть статьи можно пропустите если,конечно, вам не интересн: как это работает. Следующи. блок скрипта:
set name="Sarlink VPN"
set login=mylogin
set passwd=mypassword
set timeout=10
set count=0
Это ни что иное, как объявлена переменных и их значений. Пускай в переменных хранится название нашего VPN-соединения name, наш логин login, пароль = passwd, временная пауза между попытками timeout (таймаут) и количество попыток count.
Далее ставим метку ": pinging" (именно после двоеточия). Она нам будет нужна для перескакивания выполнения скрипта по условию. Следующая строка содержит команду echo и выводимую ею информацию.
Выводимая строка содержит слово "Waiting" имя переменной timeout, обязательно заключённое в знаки процента. Вывод этой строки будет сигнализировать о том, что скрипт выполняет этап ожидания продолжительностью в 10 секунд.
Далее следует команда ping в несвойственной ей роли. При указанных параметрах эта ко-манда просто обеспечивает нам временную задержку на 10 секунд перед очередной попыткой соединения. : pinging
echo Waiting%timeout% sec...
ping 0.0.0.0 -w 1000 -n %timeout% > nul
Ну, и кульминационная часть нашего скрипта:
: dialing
set/a count=count+1
echo Connecting...try%count%-st
rasdial%name%%login%%pass- wd% > nul && echo Connected.
goto pinging
echo DONE.
Здесь мы снова ставим метку, но уже с именем "dialing". В данном случае метка нам нужна лишь для того, чтобы разделить скрипт на две отдельные части (этапы) для наглядности.
Затем командой set выполняем арифметическое наращивание переменной count на единицу. После этого команда echo выводит сообщение о начале очередной попытки соединения с текущим номером счётчика count. Это удобно, поскольку будет наглядно видно, с какой попытки мы добились успеха. Наконец, следует долгожданная команда rasdial с указанным именем соединения, логином и паролем. А за ней следует условие. которое, в случае успеха, командой echo выведет надпись: "Connected" и скрипт за¬везших свою работу выводом надписи "DONE".
В случае же неудачи, условие направит выполнение скрипта на команду, следующую после метки "pinging", и наш скрипт начнёт очередной виток выполнения. Вот, собственно, и весь фокус.
Более детально ознакомиться с синтаксисом консольных команд и их параметрами можно по сле-дующим адресам:
http://www.rsdn.rU/article/winshell/b atanyca.xml
http://www.cmdhelp.ru/index.php7co mmands

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
admin 20 декабря 2010 00:25
создать впн в том же батнике можно командой

C:\Documents and Settings\lissyara>rasdial /?
Вызов:
rasdial элемент [пользователь [пароль|*]] [/DOMAIN:домен]
[/PHONE:номерТелефона] [/CALLBACK:ответныйНомер]
[/PHONEBOOK:файлАдреснойКниги] [/PREFIXSUFFIX]
rasdial [элемент] /DISCONNECT
rasdial
Команда успешно завершена.
C:\Documents and Settings\lissyara>
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.