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

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 06:05, 24 December 2019 (edit)
Atatob (Talk | contribs)
m (Изменил ссылку на статью "Переназначение кнопок маршрутизатора")
← Previous diff
Revision as of 06:49, 24 December 2019 (edit) (undo)
Atatob (Talk | contribs)
(Обновил статью)
Next diff →
Line 1: Line 1:
{{Languages|Script Execution}} {{Languages|Script Execution}}
-==Введение==+== Введение ==
-Программа на языке shell часто называют скриптами или сценариями(Script). С помощью shell Вы можете создавать сложные программы, конструируя их, как из кирпичиков, из существующих утилит UNIX. Интерпретатор считывает строки из файла-скрипта и выполняет их, как если бы они были введены пользователем в командной строке. +[https://ru.wikipedia.org/wiki/Сценарий_командной_строки Сценарий командной строки], или сценарий командной оболочки, (англ. shell script) — программа, выполняемая командной оболочкой операционной системы. Написанием сценариев вы можете создавать сложные программы, конструируя их, как из кирпичиков, из существующих утилит UNIX. Интерпретатор считывает строки из файла-скрипта и выполняет их, как если бы они были введены пользователем в командной строке.
-Иногда необходимо, чтобы сценарии выполнялись автоматически, эта статья объясняет, что происходит в момент запуска скрипта.+ 
 +Иногда необходимо, чтобы сценарии выполнялись автоматически при наступлении каких-либо событий. Эта статья объясняет, как обеспечить выполнение сценариев в определенный момент.
== Общая информация == == Общая информация ==
-По умолчанию DD-WRT осуществляет поиск в 4 директориях:+По умолчанию DD-WRT осуществляет поиск сценариев в следующих каталогах:
* ''/etc/config/'' * ''/etc/config/''
* ''/jffs/etc/config/'' * ''/jffs/etc/config/''
Line 12: Line 13:
== Типы сценария == == Типы сценария ==
-Для правильной работы<sup>1</sup> каждое приложение помещённое в одну из директорий должно иметь расширение..<br>+Каждый сценарий, помещённый в один из каталогов выше, должен иметь определенное расширение в зависимости от того, в какой момент (при наступлении какого события) сценарий будет запускаться системой DD-WRT.
-Каждое расширение имеет значение.+
-<br>+
-<br>+
{| border=1 cellspacing=0 cellpadding=5 {| border=1 cellspacing=0 cellpadding=5
| '''Расширение''' | '''Расширение'''
-| '''Значение''+| '''Назначение'''
|- |-
| .startup | .startup
-| будет выполняться при системном запуске, обычно время начальной загрузки и'''перед''' настройкой брандмауэра.+| будет выполняться при системном запуске, обычно время начальной загрузки и '''перед''' настройкой брандмауэра.
|- |-
| .prewall | .prewall
Line 28: Line 26:
|- |-
| . wanup | . wanup
-| будет выполняться всякий раз, когда интерфейс WAN восстанавливает работоспособность и '''после''' брандмауэра.<sup>2</sup>+| будет выполняться всякий раз, когда интерфейс WAN восстанавливает работоспособность и '''после''' брандмауэра.
|- |-
| .if | .if
| будет выполняться всякий раз, когда любой из интерфейсов восстанавливает работоспособность и '''после''' брандмауэра. | будет выполняться всякий раз, когда любой из интерфейсов восстанавливает работоспособность и '''после''' брандмауэра.
|- |-
-| . ipup+| .ipup
|запускается, когда соединение PPP восстановлено после разъединения и '''после''' брандмауэра. |запускается, когда соединение PPP восстановлено после разъединения и '''после''' брандмауэра.
|- |-
-| . ipdown+| .ipdown
-| запускается, когда соединение PPP было выключено+| запускается, когда соединение PPP было выключено.
|- |-
-|. sesbutton+|.sesbutton
-| выполняется, при нажатии кнопки [[Переназначение кнопок маршрутизатора|SES (или AOSS, EZ-SETUP)]] на маршрутизаторе +| выполняется, при нажатии кнопки [[Переназначение кнопок маршрутизатора|SES (или AOSS, EZ-SETUP)]] на маршрутизаторе.
|} |}
-<sup>1</sup>''Все файлы должны должны быть исполняемыми, к каждому из которых устанавливаються права доступа. Для этого используется команда chmod(1).''<br>+Не забудьте, что все файлы сценариев должны должны быть исполняемыми каждому файлу нужно установить права доступа. Для этого используется команда "chmod +x файл_сценария.". Сценарии .wanup могут выполняться несколько раз, во время загрузки маршрутизатора (см. тему форума http://www.dd-wrt.com/phpBB2/viewtopic.php?p=433984). При использовании WinSCP для передачи файлов на маршрутизатор, после загрузки можно просто нажать правой кнопкой мыши на имени файла и выбрать "Properties" («Свойства»), чтобы изменить разрешения.
-<sup>2</sup>''Сценарии .wanup могут выполняться несколько раз, во время загрузки маршрутизатора. [http://www.dd-wrt.com/phpBB2/viewtopic.php?p=433984]''+
-== Добавление директорий или сценириев ==+== Выполнение сценариев с другим расширением или из другого каталога ==
-Для выполнения сценария с различными расширениями или теми, которые расположены в другом каталоге, можно создать скрипт.<sup>3</sup>+ 
 +Для выполнения сценариев с расширением, не указанным в таблице выше, или расположенных в другом каталоге, можно создать следующий сценарий:
<pre> <pre>
Line 55: Line 53:
</pre> </pre>
-Команда ''sh/jffs/etc/config/*.myextension'' выполнит каждый сценарий, заканчивающийся на .myextension, найденном в каталоге /jffs/etc/config.+Измените путь /jffs/etc/config и расширение *.myextension на свои.
-<sup>3</sup>''Меняем путь (/jffs/etc/config) и расширение на свои.''+=== Как это работает ===
 +Команда ''sh /jffs/etc/config/*.myextension'' выполнит каждый сценарий, заканчивающийся на .myextension, найденный в каталоге /jffs/etc/config. Установите это значение для переменной rc_startup и скрипты *.myextension будут загружаться каждый раз при запуске маршрутизатора.
-== Автозагрузки при старте маршрутизатора ==+== Автозагрузка при запуске маршрутизатора ==
-За запуск при старте отвечает переменная rc_startup, которой присваивается значение.+За запуск сценариев при старте маршрутизатора отвечает переменная NVRAM '''rc_startup'''. См. основную статью [[Автоматически запускаемые сценарии]].
-Выполняется в коммандной строке.+ 
 +Введите в коммандной строке:
<pre> <pre>
~# nvram set rc_startup="/jffs/etc/config/*.myextension" ~# nvram set rc_startup="/jffs/etc/config/*.myextension"
Line 67: Line 67:
~# echo "/jffs/dir/my_scripts &" >> /jffs/etc/config/*.myextension ~# echo "/jffs/dir/my_scripts &" >> /jffs/etc/config/*.myextension
</pre> </pre>
-Для задержки используется ключ ="sleep" + 
 +Для задержки используется ключ ="sleep":
<pre> <pre>
~# nvram set rc_startup="sleep 30; /jffs/etc/config/*.myextension" ~# nvram set rc_startup="sleep 30; /jffs/etc/config/*.myextension"
Line 73: Line 74:
</pre> </pre>
-[[Category:Scripts/ru]]+== Ссылки ==
 +* [[LED Scripts]]
 +* [[Автоматически запускаемые сценарии]]
 +* [[Useful Scripts]]
 + 
 +[[Category: Русская документация]]
 +[[Category: Scripts/ru]]

Revision as of 06:49, 24 December 2019

Contents

Введение

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

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

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

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

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

Типы сценария

Каждый сценарий, помещённый в один из каталогов выше, должен иметь определенное расширение в зависимости от того, в какой момент (при наступлении какого события) сценарий будет запускаться системой 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" («Свойства»), чтобы изменить разрешения.

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

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

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

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

Как это работает

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

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

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

Ссылки