next up previous contents
Next: Запуск PPP на сервере Up: Редактирование скриптов запуска PPP Previous: Скрипт ppp-on.

Скрипт ppp-on-dialer.

Это -- второй из скриптов, который устанавливает PPP-соединение.

Cкрипт диалога (chat script) обычно целиком помещается на одной строке. Обратные слэши (символы "\") используются для того, чтобы объединить несколько коротких строк, которые можно выводить сразу на экран, так что командная оболочка будет воспринимать их как одну очень длинную строку. Таким образом, эти символы не являются частью скрипта.

Будет полезно, тем не менее, познакомиться с текстом этого скрипта и понять, что он должен делать.

Скрипт диалога (chat script) является последовательностью пар 'строка ожидания'-'посылаемая строка' ('expect string'-'send string'). Заметим, что любой посылке всегда предшествует ожидание некоторого сигнала. Если некая строка посылается без предварительного ожидания прихода какого-либо сигнала (или наоборот), то надо использовать пустую строку ожидания (или посылаемую строку), обозначаемую как "". Кавычки должны обрамлять сообщение и в том случае, когда оно состоит из нескольких слов (пример: сообщение 'NO CARRIER'), так что скрипт воспринимает это как единую строку.

В приведенном примере диалоговая строка выглядит так:

  exec /usr/sbin/chat -v
При вызове диалогового скрипта использована опция -v, указывающая, что все сообщения ввода и вывода будут сохраняться в системном протоколе (обычно это файл /var/log/messages). После того, как этот скрипт показал свою работоспособность, эту опцию можно убрать, сократив тем самым объем информации в системных протоколах.

Следующая строка

  TIMEOUT         3
устанавливает время ожидания для прихода ожидаемых строк, равное трем секундам. Для очень медленного модема это время можно увеличить до 5 или 10 секунд.

Строка

  ABORT           '\nBUSY\r'
говорит, что при приходе строки 'BUSY' надо прервать работу.

Аналогично нужно поступить, если придет строка 'NO ANSWER':

  ABORT           '\nNO ANSWER\r'
или строка 'RINGING':
  ABORT           '\nRINGING\r\n\r\nRINGING\r'
(так как кто-то звонит по телефону клиента).

Посылаем модему строку 'AT'; в ответ ничего не ожидается:

  ''              \rAT

В следующей строке

  OK-+++\c-OK   ATH0
использованы некоторые возможности восстановления после сообщений об ошибке. Здесь от модема ожидается строка 'OK'; если она не пришла (из-за того, что модем не находится в командном режиме), то посылается строка '+++' (эта строка возвращает стандартный Hayes-совместимый модем в командный режим) и ожидается 'OK', а затем посылается команда ATH0. Эта команда позволяет скрипту справляться с ситуацией, когда модем "завис" в режиме on-line.

Следующая строка

  TIMEOUT         30
устанавливает время ожидания, равное 30 секундам, на весь остаток скрипта. Если это время окажется недостаточным, его можно увеличить до 45 секунд и более.

Строка набора номера

  OK              ATDP$TELEPHONE
ожидает 'OK' от модема в ответ на команду ATH0, и набирает требуемый номер.

Дальше ждем сообщения 'CONNECT':

  CONNECT         ''
Наш модем также посылает 'CONNECT', когда отвечает удаленный модем.

Теперь надо войти в систему.

  ogin:--ogin:    $ACCOUNT
В эту команду встроен механизм, который, когда время ожидания будет исчерпано, а приглашение войти в систему (...ogin:)gif получено не будет, посылает пустую строку и еще раз ждет приглашения. Когда приглашение получено, то посылается имя пользователя, которое хранится в переменной командной оболочки по имени $ACCOUNT.

Теперь ожидается приглашение ввести пароль:

  assword:        $PASSWORD
и он вводится.

В данном скрипте предусмотрены возможности возникновения различных ошибок. Однако программа chat имеет гораздо больше возможностей, чем здесь продемонстрировано. Более полную информацию можно получить из экранной документации (man 8 chat).


next up previous contents
Next: Запуск PPP на сервере Up: Редактирование скриптов запуска PPP Previous: Скрипт ppp-on.

root
Sun Aug 29 12:01:30 MSD 1999