четверг, 10 марта 2011 г.

Использование cron в Acorp W422G v3

Иногда может понадобиться выполнять действия по расписанию, например отключать и включать определенный ethernet-порт. Для решения данной задачи мы можем использовать cron в связке c iptables.

По умолчанию процесс cron запускается с параметром -с /rwfs/cron (см. /rwfs/rc.d/S20crond), в то время, как crontab использует каталог /rwfs/cron/crontabs. Чтобы не делать лишних действий, будем использовать каталог (и файл) по умолчанию. Обратите внимание, что пример приведён для прошивки wive-ng-dsl 0.5.7 (uClinux), в других системах используются совершенно другие пути. Вызываем crontab для нужного каталога:
crontab -c /rwfs/cron -e
(Или можно просто набрать "vi /rwfs/cron/Admin".) Видим содержимое файла конфигурации.
SHELL=/bin/bash
PATH=/bin:/sbin:/rwfs/scripts

#*/1 * * * * echo "work at 1 minits" > /var/crontest
#01 * * * *  hourly
#02 4 * * *  cron.daily
#22 4 * * 0  cron.weekly
#42 4 1 * *  cron.monthly
Для редактирования файла (в т.ч. и через crontab) используется редактор vi, про него уже упоминалось в теме про стартовые скрипты. Вкратце - жмем Insert, чтобы войти в режим редактирования и Esc + ":wq" чтобы выйти c сохранением изменений. Формат строк в файле такой:
Мин.(0..59) Час(0..23) День(1..31) Мес.(1..12) Д.недели(1..7) Команда
Можно использовать *, если значение не важно, или */Х для срабатывания раз в Х интервалов. Раскомментируем первую строку (уберем знак # в начале) и запустим крон, если он не был запущен ранее.
service crond restart
cat /var/crontest

work at 1 minits
Всё работает, можно добавить свои правила. Используем iptables для ограничения доступа к интернету с определённого клиентского адреса (в данном случае 10.1.1.2). Будем выключать доступ в 22 часа вечера и включать в 7 утра. Для этого добавим в /rwfs/cron/Admin следующие строки:
01 22 * * * iptables -A FORWARD -i ppp+ -d 10.1.1.2 -j DROP
01 07 * * * iptables -D FORWARD -i ppp+ -d 10.1.1.2 -j DROP
Сохраним настройки и перезапустим крон:
service rwfs save
service crond restart
Доступ будет включаться и выключаться автоматически в назначенные часы.

1 комментарий: