Поднятие Инета из-под юникса

Спецвыпуск Хакера, номер #005, стр. 005-073-3

Теперь создай файл /usr/local/etc/ppp-on-dialer. Он должен быть таким:

#!/bin/bash

#

# ppp-on-dialer

# Выполняет работу по дозвону и аутентификации

#

exec /usr/sbin/chat -v

TIMEOUT 3

ABORT 'nBUSYr'

ABORT 'nNO ANSWERr'

ABORT 'nRINGINGrnrnRINGINGr'

'' rAT

'OK-+++c-OK' ATH0

TIMEOUT 30

OK ATDP$TELEPHONE

CONNECT ''

ogin:--ogin: $ACCOUNT

word: $PASSWORD

## Конец ppp-on-dialer

Здесь используются просто супертехнологии биоалгебры, микровалеологии и квантовой философии: одна команда "/usr/sbin/chat" :). Эта прога занимается "общением" с модемом. Вся ее командная строка - диалог типа "ждать - послать". Например, ожидаем "CONNECT", посылаем пустую строку (два апострофа); ждем "login:", посылаем твой логин ($ACCOUNT - переменная из ppp-on; так же, как $TELEPHONE и $PASSWORD) etc. Весь этот диалог также можно запихнуть в отдельный скрипт. В общем, в принципе то же самое, что и в виндовских скриптах *.scp, только проще все гораздо. В файле "ppp-on-dialer" править ничего не надо, кроме, конечно, самого главного: если прога эта, chat, отсутствует у тебя, нужно ее проинсталлить или путь поменять к ней, если она у тебя установлена не в /usr/sbin.

Третий и последний скрипт - /usr/local/bin/ppp-off. Он будет устраивать дисконнект :). Его тоже не правь: там все нормально.

#!/bin/bash

#

# ppp-off

# Вырубает ppp-интерфейс - дисконнектит

#

# Узнаем, какой девайс отрубить

#

if [ "$1" = "" ]; then

DEVICE=ppp0

else

DEVICE=$1

fi

# Если у ppp0 pid-файл существует, значит программа запущена. Тормозим ее.

#

if [ -r /var/run/$DEVICE.pid ]; then

kill -INT `cat /var/run/$DEVICE.pid`

#

# Если kill не пашет, значит для этого pid`а нет запущенного процесса

# Вдобавок может быть останется lock-файл. Может понадобится потереть

# lock-файл прямо тут же.

#

if [ ! "$?" = "0" ]; then

rm -f /var/run/$DEVICE.pid

echo "ОШИБКА: Убран выдохшийся pid-файл"

exit 1

fi

# Круто. Зачем мучиться будем? Пусть pppd сам и мусор за собой выносит.

#

echo "PPP-связь к $DEVICE отключен."

exit 0

fi

# Процесс ppp не запущен для ppp0

echo "ОШИБКА: PPP-связь не активна на $DEVICE"

exit 1

## Конец ppp-off

Осталось разобраться с правами. Чтобы всякие ушастые приятели не скоммуниздили у тебя аккаунт, даем право на чтение "ppp-on" только владельцу файла, т.е. тебе:

chmod 400 /usr/local/bin/ppp-on

Но это у нас скрипт, а значит, он выполняться должен. Не вопрос:

chmod 500 /usr/local/bin/ppp-on

"ppp-off" достаточно дать 755, т.к. там ничего важного нет, а исполняться он все равно должен:

chmod 755 /usr/local/bin/ppp-off

Ну а "ppp-on-dialer" можешь оставить с правами "по умолчанию". :) Теперь поставь SUID-бит на pppd, чтобы его можно было использовать не только руту, если ты собрался юзать Инет под другими логинами на своей системе:

chmod 4755 /usr/bin/pppd

Назад на стр. 005-073-2  Содержание  Вперед на стр. 005-073-4

ttfb: 2.9458999633789 ms