Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #85, ЯНВАРЬ 2006 г.

Заводной пингвин

j1m (j1m@list.ru)

Хакер, номер #085, стр. 085-100-2


Несколько *замечаний*:

1. Прописанные в crontab команды исполняются интерпретатором /bin/sh с тремя заданными переменными окружения: USER, HOME и SHELL. Так как переменная PATH не определена, ты должен указывать полный путь к бинарнику.

2. Если настроена локальная почтовая система, то весь вывод команды отправляется пользователю в письме.

Для выполнения только одного-двух заданий функциональность cron может оказаться избыточной. В этом случае лучше прибегнуть к помощи команды at. Он как раз предназначен для однократного выполнения задания и внутренне устроен гораздо проще. Для примера запустим тот же скрипт в то же время:

$ at 19:00

at> /usr/bin/our-script

CTRL-D

Очень просто и красиво, не правда ли? Время исполнения можно назначить на любой день, используя такой формат: «at час:минута /месяц/день/год». Еще мне нравится вот такой стиль указания времени: «at now + 2 hours» - выполнить команду через 2 часа, «at now + 1 day2 - на следующий день. Как и cron, at может позаботиться о том, чтобы пользователь получил уведомление о выполненном задании по почте. Для удаления ненужного задания посмотри его идентификатор в списке заданий (команда atq), а затем используй команду «atrm идентификатор» для удаления.

[автоматизируй интернет-соединения]

Пришло время автоматизировать твои многочисленные интернет-соединения. Скажу сразу, что этот раздел будет полезен только для диалапщиков. Причины просты. Владельцам выделенных линий ничего автоматизировать не надо, соединение с сетью инициализируется на этапе загрузки ОС без участия пользователя. С другой стороны, «счастливым» обладателям модемов приходится не только ограничивать время, проведенное в инете (поминутная тарификация), но и к тому же отодвигать его поближе к ночи (дешевле). Выход: заставить ОС звонить ночью провайдеру и забирать почту и нужные файлы.

Предлагаю твоему вниманию одно из возможных решений. Открываем файл /etc/ppp/ip-up и пишем в него следующее:

# vi /etc/ppp/ip-up

#!/bin/sh

# отправляем почту (только если у тебя установлен локальный почтовый сервер)

/usr/sbin/sendmail -q

# запускаем файл /tmp/ppp-auto

if [ -x /tmp/ppp-auto ]; then

/tmp/ppp-auto

# удаляем уже ненужный файл

rm -f /tmp/ppp-auto

# отключаемся

/usr/sbin/ppp-off

fi

Вместо строки /usr/sbin/ppp-off пропиши команду, с помощью которой ты отключаешься от сети. Если демон pppd найдет файл /tmp/ppp-auto, он его выполнит и разорвет соединение. Теперь создадим шаблон файла ppp-auto:

# vi ~/ppp-auto

#!/bin/sh

# файл исполняется от рута, а наши команды должны исполняться от обычного пользователя

/bin/su - имя_пользователя

# забираем почту

fetchmail

# переходим в специальный каталог

cd ~/download

# скачиваем нужные файлы

wget ftp://...

wget http://...

Установи полные права на этот файл:

$ chmod 777 ~/ppp-auto

Все. Теперь тебе нужно его заполнить, скопировать в каталог /tmp и назначить время соединения с помощью at:

$ cp ~/ppp-auto /tmp/ppp-auto

$ at 02:10

at> /usr/sbin/ppp-on

Замени /usr/sbin/ppp-on на команду, с помощью которой ты устанавливаешь соединение. Обрати внимание, что такие команды обычно требуют привилегий root, поэтому можно: a) настроить sudo (см. ниже) или б) запустить at от root'а.

Назад на стр. 085-100-1  Содержание  Вперед на стр. 085-100-3