Вопрос автоматизации подключения к Сети
заинтересовал меня практически с первых дней работы с ней по коммутируемой
линии.
Действительно, когда я сам сижу перед
компьютером, набрать имя пользователя и пароль в терминальном окошке и
выбрать тип соединения не так сложно, хотя и требует внимательности и
аккуратности. Но когда я предлагаю кому-то из моих домашних поработать в
Сети в мое отсутствие, приходится, во-первых, разъяснять, что и где
нажимать, во-вторых, сообщать имя пользователя и пароль, что отнюдь не
способствует безопасности моего счета у провайдера. Ну а если речь идет о
работе самостоятельных приложений, таких как оффлайн-броузеры (принцип
работы которых состоит в том, чтобы загрузить указанные страницы из Сети в
заданное время без вашего участия), то тут вопросов вообще не возникает:
нужен автомат, который сам соединит машину с Интернет.
Где достать такой автомат и как его
запрограммировать? В дистрибутив Windows'95 программа обработки сценариев
(scripting tool) почему-то не входит. Если вы еще не потеряли фирменный
CD-ROM Windows'95, то сможете найти на нем информационный файл (.inf) для
установки программы в каталоге \Admin\Apptools\Dscript (путь указан от
корневого каталога CD-ROM). Если это так, можете поставить ее,
воспользовавшись закладкой Windows Setup из пункта Add/Remove Programs
панели управления. Однако учтите, что этот "сценарист" (scripter) имеет
ограниченный набор команд и годится только для написания простых макросов.
Впрочем, для реализации приводимого ниже примера этого вполне достаточно.
Если ваш CD-ROM Windows'95 утерян, испорчен
или украден конкурентами, или вы вдруг устанавливали систему с гибких
дисков, спасительным средством может стать установка пакета MicrosoftPlus!,
который, однако, стоит дополнительных денег. Если у вас нет желания (или
возможности) тратиться на кучу красивых безделушек (каковой и является
вышеозначенный MSPlus!), то лучше всего заглянуть на сервер ftp://ftp.microsoft.com/
и скачать оттуда файл script.exe (размер 153 Кб). Полный путь к нему:
ftp.microsoft.com/softlib/mslfiles/script.exe. Запуск этого исполняемого
файла приведет к автоматической установке той самой программки, которая
введет за вас имя и пароль в момент соединения с сервером. Она сделает
это, руководствуясь командами, записанными в текстовом файле сценария,
причем сценарии могут быть свои для разных типов стандартных соединений (Connection).
После того, как все установлено, можно
приступать к написанию первого сценария. Он составляется в любом текстовом
редакторе, создающем чистый текст без спецсимволов (например, Notepad), и
имеет определенную структуру (язык все-таки). Начинается сценарий словами
proc main, заканчивается словами end proc. Эти команды сообщают системе
соответственно о начале и завершении сценария. По ходу своей работы
сценарий пытается имитировать работу человека, действуя по принципу:
увидел приглашение - ответил на него. В этом ему помогают команды waitfor
и transmit. Первая ожидает сообщения от сервера (например waitfor "Login:"
- ожидает сообщения "Login:"). Вторая - передает строку, указанную в
кавычках (например transmit "Hello Friend!" - отправит фразу "Hello Friend!").
Нажатие на клавишу Enter, точнее символ Carriage return (Возврат каретки),
изображается сочетанием символов ^M.
Для реализации сложных сценариев, а также
исходя из соображений безопасности, вместо непосредственно имени
пользователя и пароля в сценарий лучше включать их подстановки, имеющие
вид: $USERID - для имени пользователя и $PASSWORD - для пароля.
Реальные имя и пароль вводятся в окошке
Connect to... перед сеансом связи. Если надо запомнить пароль, отметьте
пункт Save password (Сохранить пароль), в противном случае введенный
пароль будет использован только один раз.
Некоторые серверы посылают пользователю сразу
после установления соединения целую кучу приветствий и предупреждений, да
и связь может устанавливаться не сразу, поэтому иногда с поиском ключевой
фразы или передачей своей информации необходимо немного подождать. Для
этого служит команда delay N, где N - число секунд ожидания. Вот, пожалуй,
и все основные команды, которые могут пригодиться для написания простого
сценария.
Давайте рассмотрим сценарий, который прекрасно
работает у меня для подключения к московскому провайдеру DataForce.
; Начало сценария
proc main
; Ожидаем 2 секунды, пока пройдут приветствия,
; время можно сделать и меньше
delay 2
; Ждем фразу "Login:". Обратите внимание
; на регистр и отсутствие
; пробелов - команда ждет точно то, что написано
; в кавычках.
waitfor "Login:"
; Дождались? - передаем имя пользователя,
; записанное в окошке Connect to...
; а следом за ним - символ Carriage return
; знак "+" (плюс) здесь используется
; для слияния строк
transmit $USERID + "^M"
; Ждем фразу "Password:"
waitfor "Password:"
; Передаем пароль, записанный в окошке
; Connect to...,
; а следом за ним - символ Carriage return
transmit $PASSWORD + "^M"
; Ожидаем 2 секунды, пока сервер проверит
; правильность нашего имени и пароля
delay 2
; Ждем фразу, предлагающую нам выбрать
; тип соединения
waitfor "Please enter your choice:"
; Провайдер предлагает соединение нескольких типов,
; нам требуется соединение PPP, поэтому передаем
; цифру 1 и Enter
transmit "1" + "^M"
; Ура, сценарий завершен, можно работать
end proc
Сочиненный сценарий лучше всего сохранить в
каталоге \Program Files\Accessories\ в виде файла с расширением .scp -
тогда вам не придется долго его искать, программа исполнения настроена на
этот каталог.
Готовый сценарий теперь надо связать с
имеющимся соединением (Connection) и протестировать. Нажмите кнопку Start,
выберите пункт Accessories, затем Dial-Up Scripting Tool. В окошке слева
будет список имеющихся соединений: выберите то, для которого написан
сценарий, и нажмите кнопку Browse. Если файл сценария сохранен в указанном
выше каталоге, вы сразу увидите его имя, если нет - отыщите его там, где
вы его сохранили. Выберите файл и нажмите Open.
Исходя из аксиомы, что в любой программе есть
ошибки, написанный сценарий надо протестировать. Выберите пункт Step
through script (пошаговая отладка), поставив около него галочку. Нажмите
кнопку Apply для сохранения изменений. И если раньше вы пользовались
маленьким терминальным окошком для ручного ввода имени и пароля, то теперь
его появление надо отменить, иначе сценарий работать не будет. Нажмите
кнопку Properties в том же окне и уберите галочку напротив пункта Bring up
terminal window after dialing в пункте Configure. Затем окно можно закрыть
кнопкой Close, так как для отладки сценария оно не понадобится. Теперь
звоним, дважды щелкнув по названию соединения (не забудьте ввести имя
пользователя и пароль в окне Connect to...). После установления соединения
появится собственное терминальное окошко "сценариста" и окно с текстом
сценария, в котором нажатием кнопки Step вы сможете выполнять по одной
команде и смотреть на результат.
Для отмены в любой момент нажмите кнопку
Cancel в терминальном окошке. Если все работает хорошо, отмените пошаговую
отладку и отметьте пункт Start terminal screen minimized.
Теперь можете насладиться тем, как быстро
происходит подключение, а главное тем, что ваше участие более не
требуется. Если вас заинтересовало, что еще можно делать в сценариях
подключения, прочтите документ script.doc, находящийся в каталоге Program
Files/Accessories/. Он содержит полный список команд описания сценариев и
примеры работы с ними.
Вы сможете составить, например, универсальный
сценарий для различных вариантов подключения к провайдерам, а также
повысить надежность его работы, введя условие завершения сценария при
слишком долгом ожидании ответа от сервера.
|