(страничка создана на основе Справочного руководства по kppp) Lauri Watts Перевод на русский: Александр Лойко Издание 1.01.00 Copyright 2001 Lauri Watts Разрешается копировать, распространять и/или изменять этот документ на условиях лицензии GNU для свободной документации, версии 1.1 или более поздней, опубликованной Фондом Free Software Foundation; без неизменямых разделов, без текста на первой странице, без текста на последней странице. Копия лицензии находится здесь the section entitled "GNU Free Documentation License".
Для создания скрипта дозвона для соединения с вашим Интернет-провайдером используйте диалог Kppp -> Настройка-> Настройка соединения-> Конкретное соединение -> Изменить -> Скрипт подключения. Вы можете использовать мини-терминал и сведения, предоставленные вашим Интернет-провайдером, для создания необходимого скрипта. Выберите опцию из раскрывающегося списка слева, а затем укажите параметры для выбранного действия в окне редактирования справа. Используйте кнопку Добавить для добавления записи /в конец/ скрипта, который отображается в нижней части диалога. Используйте кнопку Вставить для вставки записи в любое место скрипта, а также кнопку Удалить для удаления строки из скрипта.
Доступные опции:
- Ожидать (Expect) kppp будет ожидать получения заданной строки.
- Отправить (Send) kppp отправит заданную строку.
- Отправить без эха (SendNoEcho) kppp отправит заданную строку без эха.
- Сканировать (Scan) kppp будет сканировать входящий поток данных на предмет наличия заданной строки и сохранит все символы, начиная от конца строки и до начала новой, во внутреннем буфере. Символы пробелов как в начале строки, так и в конце будут игнорированы.
- Сохранить (Save) Постоянно хранить заранее просканированную строку в заданном регистре. На данный момент единственным доступным является регистр
- password.
- Приостановить (Pause) Приостановить на заданное число секунд.
- Повесить трубку (Hangup) kppp отдаст модему команду *повесить трубку*.
- Ответ (Answer) kppp установит модем в режим ответа.
- Таймаут (Timeout) Изменить таймаут по умолчанию на заданное число секунд при выполнении скрипта. При необходимости можно изменять таймаут в скрипте несколько раз.
- Форма ввода (Prompt) Запросить у пользователя kppp ввод строки в ответ на заданную строку- подсказку. Набранные символы будут видны пользователю. Если в заданной строке содержится метка *##*, в таком случае она будет заменена на содержимое внутреннего буфера сканирования, то есть на значение, сохраненное командой scan.
- Форма скрытого ввода (PWPromp) Запросить у пользователя kppp ввод строки в ответ на заданную строку- подсказку. Каждый введенный пользователем символ будет отображен сиволом Звездочка.
- Имя пользователя (ID) Если поле Имя пользователя на главном экране kppp заполнено, -- отправить имя пользователя. Если поле Имя пользователя не заполнено, -- запросить пользователя kppp ввести имя пользователя в ответ на заданную строку- подсказку. Набранные символы будут отображены. На следующем шаге, например, в цикле повторения или же при авторизации в режиме обратного звонка, запрос будет выводиться вне зависимости от заполнения поля Имя пользователя.
- Пароль (Password) Если поле Пароль на главном экране kppp заполнено, -- отправить пароль. Если поле Пароль не заполнено, -- запросить пользователя kppp ввести пароль в ответ на заданную строку- подсказку. Каждый набранный символ будет отбражен символом Звездочка. На следующем шаге, например, в цикл е повторения или же при авторизации в режиме обратного звонка, запрос будет выводиться вне зависимости от заполнения поля Пароль.
- Начало цикла (LoopStart) kppp будет ожидать получения заданной строки и сохранит ее для использования переменной Конец цикла.
- Конец цикла (LoopEnd) kppp будет ожидать получения заданной строки для выхода из цикла.
- Если сперва будет получена строка, заданная как Начало цикла, это вызовет переход к к строке после Начала цикла и повторение парного диалога имя_пользователя/пароль.
Пример простого скрипта логина
Ниже приведен пример простого скрипта, который можно использовать для
подключения к Интернет-провайдеру
Expect ID: # ожидать имя пользователя:
Send myid # замените myid на ваше имя пользователя
Expect word: # ожидать пароль
Send 4u3fjkl # отправить пароль `4u3fjkl`
Expect granted # Интернет-провайдер при успешном логине сообщает `Permission granted`.
Send ppp # Эта команда запускает ppp-соединение
# на удаленном компьютере Интернет- провайдера.
Скрипт логина, запрашивающий имя пользователя и пароль, а затем зацикливающийся.
Ниже приведен пример скрипта с запросом имени пользователя и пароля. Этот скрипт каждый раз запрашивает имя пользователя и пароль, вне зависимости от заполнения полей Имя пользователя и пароль на главном экране kppp. Этот скрипт также поясняет применение структуры Начало цикла/Конец цикла. Если при процедуре логина происходит сбой, к примеру, при наборе пароля допущена ошибка, Интернет-провайдер выдаст сообщение об ошибке и повторно начнет цикл имя_пользователя/пароль, отправив строку I?:.
Если строка ID: будет получена до обработки параметра Конец цикла, kppp начнет выполнение скрипта со строки с параметром Начало цикла.
LoopStart ID: # ожидать имя пользователя:
Prompt Enter ID: # запрос на ввод имени пользователя с последующей отправкой.
Expect word: # ожидать пароль
PWPrompt Enter Password: # запрос на ввод пароля с последующей отправкой.
LoopEnd granted # Интернет-провайдер при успешном логине сообщает `Permission granted`.
Send ppp # Запуск ppp-соединения на удаленном компьютере
Скрипт, запрашивающий сведения, не указанные в основном диалоге.
Я использую этот скрипт для подключения к своему Интернет-провайдеру. Скрипт запрашивает имя пользователя и пароль только в том случае, если я не заполнил соответствующие графы в главном диалоге kppp.
LoopStart ID: # ожидать имя пользователя:
ID Enter ID: # запрос на ввод имени пользователя с последующей отправкой.
Expect word: # ожидать пароль
Password Enter Password # запрос на ввод пароля с последующей отправкой.
LoopEnd granted # Интернет-провайдер при успешном логине сообщает `Permission granted`.
Send ppp # Эта команда запускает ppp-соединение на
# удаленном компьютере Интернет- провайдера
Скрипт для соединения с Интернет-провайдером, использующим авторизацию с ответами на запросы.
Вот скрипт, который я использую для подключения к Интернет-провайдеру, который требует авторизации с ответами на запросы. Обычно у вас есть устройство типа смарт-карты с дисплеем и калькулятором, предоставленное вам вашим Интернет-провайдером. Чтобы использовать его, вам необходимо знать пароль. Дозвонившись до провайдера, вы увидите запрос, который нужно будет ввести в устройство и получить динамический пароль на вход. Его вам и надо будет ввести.
LoopStart ID: # ожидать имя пользователя:
ID Enter ID: # запрос на ввод имени пользователя с последующей отправкой.
Scan Challenge: # сканировать поток до значения `Challenge`
и сохранить все последующие данные до начала новой строки.
Expect Password: # ожидать пароль
Prompt Your token is ## - Enter Password # запрос на ввод пароля с последующей отправкой.
LoopEnd granted # Интернет-провайдер при успешном логине сообщает `Permission granted`.
Send ppp # Эта команда запускает ppp-соединение на
# удаленном компьютере Интернет- провайдера
Использование опций сканирования и сохранения в скриптах
В следующем логе приводится пример подключения к несуществующему Интернет-провайдеру, который изменяет пароль при каждом новом соединении. Новый пароль должен быть проверен и сохранен для использования при следующем соединении.
University of Lummerland
Login:mylogin
Password:
The password for your next session is: YLeLfkZb
Please record and enter it for verification.
Verification:YLeLfkZb
1 = telnet
2 = SLIP
3 = PPP
Your choice:
kppp выполнит всю эту работу вместо вас, при этом устранит риск потери клочка бумаги, на котором записан ваш пароль. Ключевым моментом следующего скрипта является использование комбинации опций Сканировать/Сохранить (Scan/Save).
7 Expect Login: # ожидать запрос на логин
ID # отправить имя пользователя
Expect Password: # ожидать запрос на пароль
Password # отправить пароль
Scan is: # ожидать значения `... next session is:` and
# сканировать значение пароля
Save password # сохранить новый пароль для следующего логина
Expect Verification: # ожидать значения `Verification:`
Password # отправить новый пароль
Expect choice: # ожидать запрос на выбор типа
# соединения (telnet, SLIP, PPP)
Send 3 # выбрать опцию 3, т. е. PPP