next up previous contents
Next: Редактирование скриптов запуска PPP Up: Сети на основе телефонных Previous: Осуществление соединения PPP вручную.

Создание скриптов установления связи

Хотя и в дальнейшем можно устанавливать связь вручную, как это делалось выше, намного удобнее создать несколько скриптов, которые будут делать все операции автоматически. При этом пользователю (из группы, которой доступны команды поддержки PPP, либо пользователю root) будет достаточно ввести одну команду, чтобы эти скрипты автоматически установили связь, вошли в систему сервера и запустили программы PPP.

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

Если программное обеспечение PPP установлено правильно, то среди файлов должны присутствовать два файла с примерами. Для версии PPP 2.1.2 эти файлы находятся в каталоге /usr/sbin, а для версии PPP 2.2 -- в каталоге /etc/ppp/scripts. Названия файлов:

Если используется версия PPP 2.1.2, то мы советуем удалить файлы с примерами, поскольку их использование чревато проблемами (несмотря на то, что они длительное время использовались и даже рекомендовались в ранних версиях документа PPP-HOWTO). Для пользователей версии PPP 2.1.2 здесь даются более удачные образцы, взятые из дистрибутива версии PPP 2.2. Их предлагается скопировать и использовать вместо старых.

Скрипт ppp-on является первым из пары, которая осуществляет соединение.



#!/bin/sh
#
# Это скрипт для инициирования PPP-соединения и первый из
# пары предназначенных для этого скриптов. Они не отвечают
# требованиям безопасности, поскольку коды можно увидеть
# командой ps. Преимущество этих скриптов в их простоте.
#
# Далее идут параметры. Их нужно заменить на параметры
# для конкретного клиентского компьютера.
#
TELEPHONE=555-1212     # Телефонный номер сервера
ACCOUNT=george         # Имя пользователя для входа в
                       # систему сервера
PASSWORD=gracie        # Пароль
LOCAL_IP=0.0.0.0       # IP-адрес клиента (если известен).
                       # При динамическом назначении
                       # 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
#
# Здесь указывается местоположение скрипта, который набирает
# номер и входит в систему сервера. Надо указывать абсолютный
# путь, поскольку переменная $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           '\nBUSY\r'                      \
        ABORT           '\nNO ANSWER\r'                 \
        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
        ''              \rAT                            \
        'OK-+++\c-OK'   ATH0                            \
        TIMEOUT         30                              \
        OK              ATDP$TELEPHONE                  \
        CONNECT         ''                              \
        ogin:--ogin:    $ACCOUNT                        \
        assword:        $PASSWORD


Отметим, что четвертая снизу строка этого скрипта предполагает импульсный режим набора, принятый, в частности, в России. Для тонального набора в посылаемой строке должна быть команда ATDT$TELEPHONE.

Для версии 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 file). Теперь можно удалить это файл.
#
        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
#
# Нет процесса ppp, соответствующего ppp0
echo "ERROR: PPP link is not active on $DEVICE"
exit 1



next up previous contents
Next: Редактирование скриптов запуска PPP Up: Сети на основе телефонных Previous: Осуществление соединения PPP вручную.

root
Sun Aug 29 12:01:30 MSD 1999