Запуск сценариев по событию

From DD-WRT Wiki

Jump to: navigation, search

Contents

[edit] Введение

Сценарий командной строки, или сценарий командной оболочки, (англ. shell script) — программа, выполняемая командной оболочкой операционной системы. Написанием сценариев вы можете создавать сложные программы, конструируя их, как из кирпичиков, из существующих утилит UNIX. Интерпретатор считывает строки из файла-скрипта и выполняет их, как если бы они были введены пользователем в командной строке.

Иногда необходимо, чтобы сценарии выполнялись автоматически при наступлении каких-либо событий. Эта статья объясняет, как обеспечить выполнение сценариев в определенный момент.

[edit] Общая информация

По умолчанию DD-WRT осуществляет поиск сценариев в следующих каталогах:

  • /etc/config/
  • /jffs/etc/config/
  • /mmc/etc/config/
  • /tmp/etc/config/

[edit] Типы сценариев

Каждый сценарий, помещённый в один из каталогов выше, должен иметь определенное расширение в зависимости от того, в какой момент (при наступлении какого события) сценарий будет запускаться системой DD-WRT.

Расширение Назначение
.startup будет выполняться при системном запуске, обычно время начальной загрузки и перед настройкой брандмауэра.
.prewall будет выполняться всякий раз, когда интерфейс WAN восстанавливает работоспособность и перед брандмауэром.
. wanup будет выполняться всякий раз, когда интерфейс WAN восстанавливает работоспособность и после брандмауэра.
.if будет выполняться всякий раз, когда любой из интерфейсов восстанавливает работоспособность и после брандмауэра.
.ipup запускается, когда соединение PPP восстановлено после разъединения и после брандмауэра.
.ipdown запускается, когда соединение PPP было выключено.
.sesbutton выполняется, при нажатии кнопки SES (или AOSS, EZ-SETUP) на маршрутизаторе.

Не забудьте, что все файлы сценариев должны должны быть исполняемыми — каждому файлу нужно установить права доступа. Для этого используется команда "chmod +x файл_сценария.". Сценарии .wanup могут выполняться несколько раз, во время загрузки маршрутизатора (см. тему форума http://www.dd-wrt.com/phpBB2/viewtopic.php?p=433984). При использовании WinSCP для передачи файлов на маршрутизатор, после загрузки можно просто нажать правой кнопкой мыши на имени файла и выбрать "Properties" («Свойства»), чтобы изменить разрешения.

[edit] Выполнение сценариев с другим расширением или из другого каталога

Для выполнения сценариев с расширением, не указанным в таблице выше, или расположенных в другом каталоге, можно создать следующий сценарий:

for I in `/bin/ls /jffs/etc/config/*.myextension`;do
   sh $I &
done

Измените путь /jffs/etc/config и расширение *.myextension на свои.

[edit] Как это работает

Команда sh /jffs/etc/config/*.myextension выполнит каждый сценарий, заканчивающийся на .myextension, найденный в каталоге /jffs/etc/config. Установите это значение для переменной rc_startup и скрипты *.myextension будут загружаться каждый раз при запуске маршрутизатора.

[edit] Автозагрузка при запуске маршрутизатора

За запуск сценариев при старте маршрутизатора отвечает переменная NVRAM rc_startup. См. основную статью Автоматически запускаемые сценарии.

Введите в коммандной строке:

~# nvram set rc_startup="/jffs/etc/config/*.myextension"
~# nvram commit
~# echo "/jffs/dir/my_scripts &" >> /jffs/etc/config/*.myextension

Для задержки используется ключ ="sleep":

~# nvram set rc_startup="sleep 30; /jffs/etc/config/*.myextension"
~# nvram commit

[edit] Ссылки