Scripting/ru/startsh Выполнение скриптов

From DD-WRT Wiki

Jump to: navigation, search

Contents

[edit] Введение

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

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

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

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

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

Для правильной работы1 каждое приложение помещённое в одну из директорий должно иметь расширение..
Каждое расширение имеет значение.

Расширение 'Значение
.startup будет выполняться при системном запуске, обычно время начальной загрузки иперед настройкой брандмауэра.
.prewall будет выполняться всякий раз, когда интерфейс WAN восстанавливает работоспособность и перед брандмауэром.
. wanup будет выполняться всякий раз, когда интерфейс WAN восстанавливает работоспособность и после брандмауэра.2
.if будет выполняться всякий раз, когда любой из интерфейсов восстанавливает работоспособность и после брандмауэра.
. ipup запускается, когда соединение PPP восстановлено после разъединения и после брандмауэра.
. ipdown запускается, когда соединение PPP было выключено
. sesbutton выполняется, при [SES Button|SES/AOSS/EZ-SETUP button] нажатии

1Все файлы должны должны быть исполняемыми, к каждому из которых устанавливаються права доступа. Для этого используется команда chmod(1).
2Сценарии .wanup могут выполняться несколько раз, во время загрузки маршрутизатора. [1]

[edit] Добавление директорий или сценириев

Для выполнения сценария с различными расширениями или теми, которые расположены в другом каталоге, можно создать скрипт.3

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

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

3Меняем путь (/jffs/etc/config) и расширение на свои.

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

За запуск при старте отвечает переменная 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