Хотя вы можете продолжать регистрироваться вручную как было показано выше,
гораздо лучше настроить некоторые скрипты, чтобы для вас это происходило
автоматически.
Набор скриптов автоматизирует процесс входа в систему и запускает PPP так что
все, что вы должны сделать (от root или как член группы PPP) - дать одну
команду запуска вашего соединения.
Если ваш ISP не требует использования PAP/CHAP, вам нужны именно эти скрипты!
Если пакет ppp установлен правильно, вы должны иметь два файла примеров. Для
PPP 2.1.2 они находятся в /usr/sbin, а для PPP 2.2 они находятся в
/etc/ppp/scripts. Они называются
для PPP-2. 1.2
ppp-on
ppp-off
а для PPP-2. 2
ppp-off
ppp-on
ppp-on-dialer
Теперь, если Вы используете PPP 2.1.2, я настойчиво прошу вас удалить файлы
примеров. С ними имеются потенциальные проблемы - и не сообщайте мне, что они
прекрасно работают - я использовал их очень долго (и даже рекомендовал их
в первой версии этого HOWTO)!
Для пользователя PPP 2.1.2 имеется ЛУЧШАя версия шаблона, взятая из дистрибутива
PPP 2.2 . Я предлагаю вам скопировать и использовать эти скрипты вместо
старого скрипта PPP-2.1.2 .
Это первый из ПАРЫ скриптов, которые фактически запускают соединение.
______________________________________________________________________
#!/bin/sh
#
# Скрипт для инициации соединения PPP. Это первая часть из пары скриптов.
# Это не секретные скрипты, так как коды видны командой ps.
# Однако это пример.
#
# Это параметры. Измените их как нужно.
TELEPHONE=555-1212 # Телефонный номер соединения
ACCOUNT=george # Имя пользователя для входа ('George Burns')
PASSWORD=gracie # Пароль для этого аккаунта (и 'Gracie Allen')
LOCAL_IP=0.0.0.0 # Локальный IP адрес, если известен. Динамический = 0.0.0.0
REMOTE_IP=0.0.0.0 # Удаленный IP адрес, если желателен. Обычно 0.0.0.0
NETMASK=255.255.255.0 # Соответствующая сетевая маска, если нужна
#
# Экспортируем их, чтобы они были доступны в 'ppp-on-dialer'
export TELEPHONE ACCOUNT PASSWORD
#
# Это расположение скрипта, который звонит по телефону и регистрируется в
# системе. Пожалуйста, используйте абсолютное имя файла, так как опция connect
# не использует переменную $PATH. (Если это сделать, то 'root' аккаунт будет
# дырой в защите, так что не просите.)
#
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#
# Инициация соединения
#
#
exec /usr/sbin/pppd debug /dev/ttySx 38400
$LOCAL_IP:$REMOTE_IP
connect $DIALER_SCRIPT
______________________________________________________________________
Это скрипт ppp-on-dialer:
______________________________________________________________________
#!/bin/sh
#
# Это вторая часть скрипта ppp-on. Она выполняет установку желаемого
# соединения.
#
/usr/sbin/chat -v
TIMEOUT 3
ABORT 'nBUSYr'
ABORT 'nNO ANSWERr'
ABORT 'nRINGINGrnrnRINGINGr'
'' rAT
'OK-+++c-OK' ATH0
TIMEOUT 30
OK ATDT$TELEPHONE
CONNECT ''
ogin:--ogin: $ACCOUNT
assword: $PASSWORD
______________________________________________________________________
Для PPP-2.2, сценарий ppp-off примерно такой:
______________________________________________________________________
#!/bin/sh
######################################################################
#
# Определить прерываемое устройство.
#
if [ "$1" = "" ]; then
DEVICE=ppp0
else
DEVICE=$1
fi
######################################################################
#
# Если pid файл ppp0 есть, тогда программа работает. Остановить ее.
if [ -r /var/run/$DEVICE.pid ]; then
kill -INT `cat /var/run/$DEVICE.pid`
#
# Если kill не работает, тогда нет процесса, запущенного под этим pid.
# Это может также означать, что существует посторонний lock файл.
# Возможно, вы захотите удалить его.
if [ ! "$?" = "0" ]; then
rm -f /var/run/$DEVICE.pid
echo "ERROR: Removed stale pid file"
exit 1
fi
#
# Отлично. Пусть pppd поправит свой собственный недочет.
echo "PPP link to $DEVICE terminated."
exit 0
fi
#
# для ppp0 не запущен ppp процесс
echo "ERROR: PPP link is not active on $DEVICE"
exit 1
______________________________________________________________________
Поскольку новые скрипты приходят двумя частями, мы в свою очередь отредактируем
их.
Скрипт ppp-on
Вы должны будете отредактировать скрипт чтобы вставить ВАШЕ имя пользователя на
вашем ISP, ВАШ пароль на вашем ISP, номер телефона вашего ISP.
Каждая из строк типа TELEPHONE= - это фактически установленные переменные shell,
которые содержат информацию справа от = (исключая комментарии, конечно).
Отредактируйте каждую из этих строк так, чтобы они соответствовали вашему ISP и
соединению.
Также, поскольку вы устанавливаете IP адрес (если вам это нужно) в файле
/etc/ppp/options, УДАЛИТЕ строку, которая говорит
Также, удостоверьтесь, что переменная оболочки DIALER_SCRIPT указывает на полный
путь и имя скрипта для дозвона, который вы фактически собираетесь использовать.
Так что, если вы переместили его или переименовали скрипт, удостоверьтесь, что
вы отредактировали эту строку правильно в скрипте ppp-on!
Сценарий ppp-on-dialer
Это - второй скрипт, который фактически поднимает нашу ppp связь.
Обратите внимание: chat скрипт обычно однострочный. Наклонные черты влево
используются, чтобы разместить строки на нескольких физических строках
(для удобочитаемости человеком) и не формировать часть скрипта самому.
Однако, очень полезно рассмотреть это подробно так, чтобы мы поняли, что же
фактически (предположительно) происходит!
Скрипт chat - последовательность пар "ожидаемая строка" "посылаемая строка".
В частности обратите внимание, что мы ВСЕГДА ожидаем что-нибудь перед тем, как
пошлем что-либо.
Если мы должны послать что-то БЕЗ того, чтобы сначала получить что-нибудь, мы
должны использовать пустую строку ожидания (обозначаемую "") и аналогично для
ожидания чего-либо без того, чтобы посылания чего-нибудь! Также, если строка
состоит из нескольких слов, (например, NO CARRIER), вы должны взять строку в
кавычки, чтобы chat вопринял ее как одно целое.
В вызове chat опция -v говорит, чтобы chat копировал ВЕСЬ ввод/вывод в систеный
лог (обычно /var/log/messages). Как только вы убедитесь, что скрипт chat
работает надежно, отредактируйте эту строку, чтобы удалить -v, чтобы не хранить
ненужную информацию в вашем syslog.
Это устанавливает паузу для получения ожидаемого ввода в 3 секунды. Вы можете
увеличить это значение до 5 или 10 секунд, если вы используете медленный модем!
Это немного более сложно, поскольку использует некоторые из возможностей
восстановления при ошибках chat.
What is says is...Ожидаем OK, если он не получен (потому что модем не в
командном режиме), затем посылаем +++ (стандартная строка для Hayes-совместимых
модемов, которая возвращает модем в командный режим) и ожидаем OK.
Затем посылаем ATH0 (строка для завершения связи модема). Это позволяет вашему
скрипту справляться с вашим модемом, зависшим во время сеанса связи!
Установим паузу по времени в 30 секунд для оставшихся команд скрипта. Если вы
испытываете проблемы со скриптом chat, прерывающимся из-за пауз, увеличьте
это значение до 45 секунд или больше.
______________________________________________________________________
OK ATDT$TELEPHONE
______________________________________________________________________
Ожидаем OK (ответ модема на команду ATH0) и набираем номер, на который мы
хотим позвонить.
Снова, здесь мы вставляем кое-какое исправление ошибок. Ожидаем подсказку
входа в систему (... ogin:), но если мы не получаем ее по истечении паузы, то
посылаем возврат каретки и затем ищем подсказку входа в систему снова. Когда
подсказка получена, посылаем username (сохраненное в переменной shell $ACCOUNT).
Ожидаем запроса пароля и посылаем наш пароль (аналогично сохраненный в
переменной shell).
Этот скрипт chat имеет приемлемую возможность исправления ошибок. chat имеет
значительно большее количество возможностей, чем показано здесь. Для подробной
информации проконсультируйтесь с man chat (man 8 chat).
Запуск PPP на серверной стороне моединения
Хотя скрипт ppp-on-dialer отлично подходит для серверов, которые автоматически
запускают pppd на серверной стороне как только вы зарегистрировалися, некоторые
серверы требуют, чтобы вы явно дали команду запуска PPP на сервере.
Если вы должны дать команду, чтобы запустить PPP на сервере, вы должны
отредактировать скрипт ppp-on-dialer.
В КОНЦЕ сценария (после строки пароля) добавьте дополнительную пару
ожидаемой-посылаемой строк - которая искала бы вашу подсказку регистрации в
системе (отличая символы, которые имеют специальное значение в оболочке Bourne -
типа $ и [ или ] (открытые и закрытые квадратные скобки).
Как только программа chat нашла командную строку оболочки, она должна выдать
команду запуска ppp, требуемую для PPP сервера вашего ISP.
В моем случае, мой PPP сервер использует стандартную подсказку bash Linux.
Если ваш ISP использует PAP/CHAP, то ваш сценарий chat намного более простой.
Весь ваш сценарий chat должен делать вот что - звонить по номеру телефона,
ждать соединения и затем позволить pppd обработать регистрацию в системе!
______________________________________________________________________
#!/bin/sh
#
# This is part 2 of the ppp-on script. It will perform the connection
# protocol for the desired connection.
#
exec /usr/sbin/chat -v
TIMEOUT 3
ABORT 'nBUSYr'
ABORT 'nNO ANSWERr'
ABORT 'nRINGINGrnrnRINGINGr'
'' rAT
'OK-+++c-OK' ATH0
TIMEOUT 30
OK ATDT$TELEPHONE
CONNECT ''
______________________________________________________________________
Как мы уже видели, вы можете включить отладочную информацию опцией -d в pppd.
Опция 'debug' эквивалентна ей.
Поскольку мы устанавливаем новое соединение с новым скриптом, сейчас поставьте
опцию отладки. (Предупреждение: если у вас мало дискового пространства, то логи
pppd могут быстро увеличить ваш файл syslog и создать вам проблему - but to do
this you must fail to connect and keep on trying for quite a few minutes).
Как только вы обрадуетесь, что все работает правильно, можете удалить эту опцию.
Если вы назвали ваш ppp файл опций как-нибудь иначе, чем /etc/ppp/options, или
/etc/ppp/options.ttySx, определите имя файла опцией file в pppd - например
Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!