Приведенный сценарий основан на примере для РРР из главы 6. Для повышения надежности сценария добавлены метки и команды обнаружения ошибок.
# Выполняем настройку параметров setup: # Запрашиваем адреса у РРР get $local 0.0.0.0 # Выбираем порт port cual # Устанавливаем скорость порта speed 57600 # Создаем счетчик цикла get $loopcntr О # Коммутация с удаленным сервером dialin: # Аппаратная инициализация модема и очистка буфера ввода reset flush # Набираем номер РРР-сервера и проверяем ответ модема dial *70,301-555-1234 # Если занято (BUSY), набрать номер снова if $errlvl == 3 goto redial # В случае иной ошибки прервать выполнение if $errlvl ! = 1 goto dial-error # Иначе - инициализировать счетчик цикла get $loopcntr 0 It Делаем паузу в две секунды, чтобы сервер успел подготовиться sleep 2 # Регистрация на удаленном сервере login: в Передаем символ возврата каретки, чтобы «разбудить» сервер send \r # Ожидаем приглашения Username> и передаем имя пользователя wait name> 20 if Serrlvl != 0 goto try-again send kristin\r # Ожидаем приглашения Password> и передаем пароль wait word> 10 if $errlvl != 0 goto server-failure password # Ожидаем приглашения командной строки сервера РРР wait > 20 if $errlvl != О goto server-failure # Передаем команду, регламентированную сервером РРР send ррр enabled\r # Успех! Мы подключились, connected: # Переводим интерфейс в режим РРР mode РРР # Завершаем работу сценария exit # Подпрограммы обработки ошибок # Набирать номер до трех раз. Между попытками делать паузы по 5 секунд redial: inc Sloopcntr # Sloopcntr > 3 goto busy-failure sleep 5 goto dialin tt Повторная попытка «разбудить» сервер try-again: inc Sloopcntr if $loopcntr > 1 goto server-failure goto login dial-error: print He удалось подключиться к Sremote. quit server-failure: print Сервер Sremote не ответил, quit busy-failure: print Линия сервера Sremote занята. Перезвоните позже, quit
Данный сценарий представляет собой реалистичный пример использования наиболее востребованных команд dip. Тем не менее есть шансы столкнуться с особыми проблемами при написании подобных сценариев. В таком случае поможет широкий выбор доступных в dip команд. Если посредством dip задачу решить не удается, обратитесь к инструменту expect. Полное описание языка сценариев expect дается в книге Дона Либиса (Don Libes) «Exploring Expect» (Изучаем Expect), O'Reilly & Associates.