Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Next Previous Contents

2. Звонки с помощью minicom

Многие руководства по PPP рекомендуют выйти из minicom после того, как он был использован для дозвоная. Но в действительности не нужно покидать эту удобную программу...

2.1 Настройка minicom

Запустите "minicom -s" и выберите пункт меню "Serial port setup".

Первым стоит пункт "Serial Device" - это самая важная установка: ваш модем поключается к последовательному устройству. (Кто хочет заставить minicom работать с несколькими последовательными устройствами одновременно ?) Нажмите return для подтверждения и esc чтобы выйти в начальное меню установок. Выберите "Exit to minicom" и напечатайте "atdt99999". Ваш модем немедленно начнет набирать номер и вы услышите щелчок, когда модем поднимет трубку. Конечно, "99999" - несуществующий номер.

2.2 Запуск PPP вручную

Возможно, вы пытались звонить по телефону вашего провайдера вместо "99999". Вы видели беспорядочные символы на экране после регистрации (если нет, напечатайте "ppp")? Они говорят о том, что на другом конце линии запущен "pppd" (или его эквивалент). Если это так, то вы со своей стороны можете попытаться запустить демон "pppd" и впоследствии оценить содержимое лог-файлов.

Чтобы запустить "pppd" внутри minicom, вы можете определить новый метод закачки "upload" (то есть, от вас) или переопределить установку "kermit programm" из меню конфигурации "Filename and paths":

 
             A - Download directory :
             B -   Upload directory :
             C -   Script directory :
             D -     Script program : /usr/bin/runscript
             E -     Kermit program : /usr/sbin/pppd file /etc/ppp/mini_options
Сейчас, если вы видели эти беспорядочные символы, при следующем звонке вашему провайдеру вы можете нажать Alt-K, чтобы запустить "pppd".

Оставшаяся часть этого mini-HOWTO посвящена вопросам автоматизации логгирования и запуска "pppd".

2.3 Изучение логов

Хотя я не собираюсь объяснять как настраивается PPP, я вкратце опишу как читать логи. Чтобы выделить значимую информацию из лога "/var/log/debug" (или "/var/log/daemon.log") выполните команды

 
                 tail -n 40  /var/log/debug |\
                         grep -E " pppd\[[0-9]*\]:" |\
                         sed -e "s/^.*pppd\[/[/" 
Вы увидите сообщения вроде этих
 
                 sent [LCP ConfReq id=0x1 <mru 296>]
                 rcvd [LCP ConfRej id=0x1 <mru 296>]
которые показывают что мы отправили запрос на установку максимального размера принимаего блока (mru) в значение 296. Другая сторона отвергла эту установку ("configuration rejected"). В этом случае я только удалил опцию "mru" из файла "/etc/ppp/options" (см. ниже).

2.4 Настройка телефонных номеров

Если вышеприведенные действия были успешными, вы можете захотеть сохранить телефонный номер в базе данных minicim'а. Нажмите Alt-D для вызова меню звонков и с помощью курсорных клавиш выберите "Edit":

 
                 A -  Name                : Xeno
                 B -  Number              : 022039697303
                 C -  Dial string #       : 1
                 D -  Local echo          : No
                 E -  Script              : /etc/ppp/login.script
                 F -  Username            : ppp-382
                 G -  Password            : top-secret
                 H -  Terminal Emulation  : VT102
                 I -  Backspace key sends : Delete
                 J -  Linewrap            : Off
                 K -  Line Settings       : Curr 8N1
Это пример записи для одного из моих провайдеров. Сценарий "/etc/ppp/login.script" показан ниже. В этом сценарии имеются две специальные переменные: $(LOGIN) и $(PASS), которые устанавливают значения имени пользователя (F) и пароля (G). Эта особенность придает minicom'у некоторую гибкость, потому что вам нужен только один скрипт, чтобы автоматически подсоединяться к нескольким провайдерам.

2.5 Сценарий регистрации

"minicom" запускает сценарий регистрации (login-script) после того как он примет строку "CONNECT". Чтобы быть точным, "minicom" не выполняет сценарий сам, а вызывает для этого утилиту "runscript" в качестве дочернего процесса.

Ниже показан пример, который я использую для моего провайдера.

 
                 # v1.0, 20.08.96 Winfried TrЭmper <winni@xpilot.org>
                 print ""
                 print "Автоматическая регистрация через /etc/ppp/login.script"
         
                 ## раскомментируйте, если вам нужно нажать <return>, чтобы
                 ## получить строку приглашения
                 #send ""
         
                 expect {
                         "ogin:"
                         "ogin>"
                         "sername:"
                         "sername>"
                         "NO CARRIER" exit 1
                 }
                 send "$(LOGIN)"
                 expect {
                         "assword:"
                         "assword>"
                         timeout 20
                 }
                 send "$(PASS)"
                 expect {
                         "port"  send "ppp"
                         "Start your PPP now"
                         "}!}!}"
                         timeout 10
                 }
                 print ""
                 print "Сейчас переключаемся в ppp-режим ..."
                 print ""
 
                 ! /usr/sbin/pppd  file /etc/ppp/mini_options
 
                 print ""
                 print "команда  killall -TERM pppd  прекращает работу pppd"

Для запуска "pppd" используется cпособность "runscript" вызывать внешние программы. Скопируйте ваш собственный файл options для ppp в "/etc/ppp/options.ttyS1" (здесь вы можете заменить "ttyS1" на устройство, к которому подключен ваш модем) и удалите все строки из /etc/ppp/options, которые относятся к вашему модему (вроде "connect", "crtscts" или "modem"). Вставьте опции, которые специфичны для ppp-соединения через minicom в "/etc/ppp/mini_options". Одной из этих опций будет

 
                 disconnect "chat '' '\d\d+++\d\dATH\r\c'"
Эта опция должна быть, так как "pppd" читает данные через стандартный поток ввода и не может заставить модем бросить трубку через "crtscts".

2.6 Автоматический дозвон при запуске

Чтобы звонить по определенному номеру при запуске minicom, используйте опцию "-d". Также вы можете попробовать

 
                 open -sl -- minicom -d 1
чтобы перебросить minicom в другую консоль (см. Consoles-Many mini-HOWTO).

2.7 Будущие расширения

Поскольку "pppd" - демон, он не предназначен для интерактивного общения с пользователем или наблюдения. Это так. И после всего этого мы используем юниксы...

Каноническое решение позади. Есть добровольцы хакнуть minicom? Желаемые расширения такие:

  • автоматическое создание сценария регистрации по последовательности действий, производимых пользователем при ручном установлении соединения
  • автоматическая оценка логов с коррекцией опций
  • выделение сообщений вроде тех, что упомянуты в п.п.2.3.

Next Previous Contents