Запуск сценариев по событию
From DD-WRT Wiki
English • Deutsch • Español • Français • Italiano • 日本語 • Polski • Português • Русский • Svenska • 中文(中国大陆) • 中文(台灣) • |
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