Сценарий chat состоит из пар ожидание/передача, определяющих строки, ожидаемые системой, и строки, передаваемые в ответ. В действительности chat не имеет языка сценариев, но предоставляет ряд специальных символов, позволяющих создавать более сложные сценарии. Ниже приведен сценарий chat, выполняющий те же самые функции, что и сценарий dip, который мы изучали в предшествующем разделе:
'' ATZ OK ATDT*70,301-555-1234 CONNECT \d\d\r ogin> kristin word> Wats?Wat? > 'set port ppp enabled'
Каждая строка сценария начинается ожидаемой строкой, а заканчивается строкой, которая передается в качестве ответа. Модем не посылает строку, пока не получит соответствующую команду. Первая строка сценария имеет смысл «не ожидать ничего, передать модему команду инициализации». Пара одинарных кавычек (') в начале строки указывает программе chat, что не следует ожидать получения какой-либо строки. Выполнив команду инициализации, сценарий ожидает получения от модема приглашения ОК, а затем набирает номер удаленного сервера. Когда модем отображает сообщение CONNECT, сценарий выжидает две секунды (\d\d), а затем передает символ возврата каретки (\r). Каждый специальный символ \d предписывает паузу длительностью в одну секунду. Специальный символ \r обозначает возврат каретки. В chat существует довольно много специальных символов, которые могут использоваться в строках ожидания и передачи. Сценарий завершается передачей имени пользователя, пароля, а также команды настройки удаленного сервера - в ответ на соответствующие приглашения.
Наберите сценарий в своем любимом текстовом редакторе и сохраните в файле, назвав его, например dial-server. Проверьте сценарий при помощи ключа -V команды chat, который предписывает комментировать выполнение сценария в стандартном потоке ошибок:
|
Выполнения сценария chat не достаточно для настройки канала РРР. Чтобы выполнить поставленную задачу, команду следует использовать в сочетании с pppd. Параметр командной строки connect позволяет запустить pppd и выполнить сценарий подключения в одной команде:
# pppd /dev/cua1 56700 connect "chat -V -f dial-server" \ nodetach crtscts modem defaultroute
Команда chat, указанная в качестве аргумента параметра connect, используется для коммутируемого подключения и регистрации. Здесь может применяться любой пакет, способный выполнить подобные действия; не обязательно chat.
Команда pppd имеет и другие параметры, используемые для клиентов коммутируемых РРР-подключений. Параметр modem предписывает pppd отслеживать наличие несущей частоты (DCD) модема. Указатель DCD сообщает pppd, что соединение установлено или разорвано, pppd следит за DCD, чтобы определить, когда удаленный сервер повесит трубку. Параметр nodetach запрещает pppd отсоединение от терминала и работу в фоновом режиме. Это необходимо только в случае, когда команда chat выполняется с ключом -V. Завершив отладку сценария chat, удалите ключ V из подкоманды chat и параметр nodetach из команды pppd. Альтернативой является применение ключа -v команды chat. -V не требует изменения режима работы pppd, поскольку диагностика chat передается демону syslogd, а не в поток ошибок. Все прочие параметры этой командной строки мы уже встречали ранее.