Поднятие Инета из-под юникса
Спецвыпуск Хакера, номер #005, стр. 005-073-3
Теперь создай файл /usr/local/etc/ppp-on-dialer. Он должен быть таким:
#!/bin/bash
#
# ppp-on-dialer
# Выполняет работу по дозвону и аутентификации
#
exec /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 \
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