Библиотека сайта rus-linux.net
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