Ключевое слово TIMEOUT позволяет указать длительность ожидания строки. При определении в тексте сценария данное значение может изменяться для каждой из ожидаемых строк. Предположим, мы даем удаленному серверу 30 секунд, чтобы отобразить приглашение Username>, но лишь 5 секунд, чтобы отобразить приглашение Password> после передачи имени пользователя. Задача решается при помощи следующей команды:
TIMEOUT 30 name> karen TIMEOUT 5 word> beach%PARTY
Ключевые слова ABORT и REPORT функционально схожи. Оба слова определяют строки, получение которых приводит к выполнению специальных действий. Ключевое слово ABORT определяет строки, получение которых вместо строки CONNECT от модема приводит к прерыванию работы сценария. Ключевое слово REPORT определяет подстроки, присутствие которых в сообщениях, полученных от последовательного порта, приводит к записи сообщений в поток stderr или файл отчета. Проиллюстрируем применение этих ключевых слов следующим примером:
REPORT CONNECT ABORT BUSY ABORT 'NO CARRIER' ABORT 'RING - NO ANSWER' say "np0M3B0flMTCfl noAiuwHeHMe k cepBepy ppp... "'• AT0T5551234 CONNECT \r name> karen word> beach*PARTY
Первая строка предписывает регистрировать в журнале все сообщения, полученные сценарием, которые содержат слово CONNECT. Если при запуске программы chat присутствовал ключ командной строки - г , сообщение заносится в файл, определенный аргументом ключа. В противном случае сообщение попадает в поток stderr. Назначение данной команды - отображать на терминале пользователя полученное от модема сообщение о подключении. Полное сообщение может выглядеть так: CONNECT 28, 800 LAPM/V; оно позволяет пользователю определить, какова скорость соединения и какой используется протокол передачи. Сообщение CONNECT означает успешное подключение. Следующие три строки сценария начинаются ключевым словом ABORT и связаны с сообщениями модема, означающими различные ошибки. Если от модема поступают сообщения BUSY, NO CARRIER или RING - NO ANSWER, работа сценария прерывается.
Ключевое слово SAY передает строку-аргумент на терминал пользователя. В данном случае мы говорим пользователю, что сценарий начал звонить. Последние четыре строки - это пары ожидание/передача, с которыми мы уже познакомились в этом разделе. Не ожидая получения строки (""), сценарий передает модему команду набора номера (ATDT). Сценарий ожидает получения строки CONNECT от модема и передает символ возврата каретки удаленному серверу; ожидает получения строки Username> от удаленного сервера и отвечает именем karen. Наконец, сценарий ожидает получения строки Password> от сервера и отвечает паролем beach%PARTY.