Автоматически запускаемые сценарии - Revision history http://wiki.dd-wrt.com/wiki/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8&action=history Revision history for this page on the wiki en MediaWiki 1.10.1 Fri, 29 Mar 2024 12:47:05 GMT Atatob: Обновил ссылки на статью "Запуск сценариев по событию" http://wiki.dd-wrt.com/wiki/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8&diff=55328&oldid=prev <p>Обновил ссылки на статью &quot;Запуск сценариев по событию&quot;</p> <table border='0' width='98%' cellpadding='0' cellspacing='4' style="background-color: white;"> <tr> <td colspan='2' width='50%' align='center' style="background-color: white;">←Older revision</td> <td colspan='2' width='50%' align='center' style="background-color: white;">Revision as of 07:10, 24 December 2019</td> </tr> <tr><td colspan="2" align="left"><strong>Line 5:</strong></td> <td colspan="2" align="left"><strong>Line 5:</strong></td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;">Далее представлены несколько способов заставить DD-WRT автоматически запускать сценарии командной строки при запуске маршрутизатора.</td><td> </td><td style="background: #eee; font-size: smaller;">Далее представлены несколько способов заставить DD-WRT автоматически запускать сценарии командной строки при запуске маршрутизатора.</td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr> <tr><td>-</td><td style="background: #ffa; font-size: smaller;">Кроме указанных в этой статье существует еще один способ - поместить сценарии в специальную папку с расширением .startup. См. [[<del style="color: red; font-weight: bold; text-decoration: none;">Script Execution</del>]].</td><td>+</td><td style="background: #cfc; font-size: smaller;">Кроме указанных в этой статье существует еще один способ - поместить сценарии в специальную папку с расширением .startup. См. [[<ins style="color: red; font-weight: bold; text-decoration: none;">Запуск сценариев по событию</ins>]].</td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;">= Способ 1. Веб-интерфейс =</td><td> </td><td style="background: #eee; font-size: smaller;">= Способ 1. Веб-интерфейс =</td></tr> <tr><td colspan="2" align="left"><strong>Line 129:</strong></td> <td colspan="2" align="left"><strong>Line 129:</strong></td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;">=== Назначить запуск сценария ===</td><td> </td><td style="background: #eee; font-size: smaller;">=== Назначить запуск сценария ===</td></tr> <tr><td>-</td><td style="background: #ffa; font-size: smaller;">Подробнее об этом см. статью [[<del style="color: red; font-weight: bold; text-decoration: none;">Script Execution</del>]].</td><td>+</td><td style="background: #cfc; font-size: smaller;">Подробнее об этом см. статью [[<ins style="color: red; font-weight: bold; text-decoration: none;">Запуск сценариев по событию</ins>]].</td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;">= Способ 4. Клиент Samba =</td><td> </td><td style="background: #eee; font-size: smaller;">= Способ 4. Клиент Samba =</td></tr> <tr><td>-</td><td style="background: #ffa; font-size: smaller;">Недостаток JFFS заключается в том, что она не работает на некоторых версиях прошивки и предоставляет мало пространства для хранения файлов. Если у вас есть сервер Samba или Windows Server, работающий в локальной сети, можно использовать невероятную опцию 'sambashare'. Это добавит маршрутизатору огромное количество доступного для записи пространства для хранения и можно будет задать сценарий, который будет автоматически запускаться, когда общий ресурс Samba монтируется при загрузке. Параметры общих ресурсов Samba можно найти в разделе ''Administration'' [[Веб-интерфейс|веб-интерфейса]]. Если параметр Startup script (см. [[<del style="color: red; font-weight: bold; text-decoration: none;">Script Execution</del>]]) задать в значение ''startup.sh'', каждый раз после подключения (монтирования) общего ресурса будет запускаться сценарий ''/tmp/smbshare/startup.sh''.</td><td>+</td><td style="background: #cfc; font-size: smaller;">Недостаток JFFS заключается в том, что она не работает на некоторых версиях прошивки и предоставляет мало пространства для хранения файлов. Если у вас есть сервер Samba или Windows Server, работающий в локальной сети, можно использовать невероятную опцию 'sambashare'. Это добавит маршрутизатору огромное количество доступного для записи пространства для хранения и можно будет задать сценарий, который будет автоматически запускаться, когда общий ресурс Samba монтируется при загрузке. Параметры общих ресурсов Samba можно найти в разделе ''Administration'' [[Веб-интерфейс|веб-интерфейса]]. Если параметр Startup script (см. [[<ins style="color: red; font-weight: bold; text-decoration: none;">Запуск сценариев по событию</ins>]]) задать в значение ''startup.sh'', каждый раз после подключения (монтирования) общего ресурса будет запускаться сценарий ''/tmp/smbshare/startup.sh''.</td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;">Смотрите статью [[Сетевая файловая система Samba]] для подробной информации.</td><td> </td><td style="background: #eee; font-size: smaller;">Смотрите статью [[Сетевая файловая система Samba]] для подробной информации.</td></tr> <tr><td colspan="2" align="left"><strong>Line 138:</strong></td> <td colspan="2" align="left"><strong>Line 138:</strong></td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;">= Ссылки =</td><td> </td><td style="background: #eee; font-size: smaller;">= Ссылки =</td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;">* [[LED Scripts]]</td><td> </td><td style="background: #eee; font-size: smaller;">* [[LED Scripts]]</td></tr> <tr><td>-</td><td style="background: #ffa; font-size: smaller;">* [[<del style="color: red; font-weight: bold; text-decoration: none;">Script Execution</del>]]</td><td>+</td><td style="background: #cfc; font-size: smaller;">* [[<ins style="color: red; font-weight: bold; text-decoration: none;">Запуск сценариев по событию</ins>]]</td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;">* [[Useful Scripts]]</td><td> </td><td style="background: #eee; font-size: smaller;">* [[Useful Scripts]]</td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;">[[Category: Русская документация]]</td><td> </td><td style="background: #eee; font-size: smaller;">[[Category: Русская документация]]</td></tr> <tr><td> </td><td style="background: #eee; font-size: smaller;">[[Category: Конфигурирование]]</td><td> </td><td style="background: #eee; font-size: smaller;">[[Category: Конфигурирование]]</td></tr> </table> Tue, 24 Dec 2019 07:10:45 GMT Atatob http://wiki.dd-wrt.com/wiki/index.php/Talk:%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8 Atatob: Перевод http://wiki.dd-wrt.com/wiki/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8&diff=55309&oldid=prev <p>Перевод</p> <p><b>New page</b></p><div>{{Languages|Startup Scripts}}<br /> = Введение =<br /> Иногда требуется, чтобы какие-либо команды выполнялись при каждом запуске маршрутизатора. В это случае требуется написание автоматически запускаемых сценариев.<br /> <br /> Далее представлены несколько способов заставить DD-WRT автоматически запускать сценарии командной строки при запуске маршрутизатора.<br /> <br /> Кроме указанных в этой статье существует еще один способ - поместить сценарии в специальную папку с расширением .startup. См. [[Script Execution]].<br /> <br /> = Способ 1. Веб-интерфейс =<br /> == Предварительные требования ==<br /> <br /> * Умение использовать [[веб-интерфейс]] DD-WRT.<br /> * Определить последовательность команд, которые должны выполняться при каждом запуске маршрутизатора.<br /> * Предварительно проверить правильную работу команд в [[SSH, Telnet и командная строка|командной строке]] (необязательно).<br /> <br /> == Инструкция ==<br /> <br /> # В [[Веб-интерфейс|веб-интерфейсе]] перейдите на вкладку '''Administration → Command''' (или '''Administration → Diagnostics''' в старых версиях DD-WRT). <br /> # Введите команды, которые требуется выполнять при каждом запуске маршрутизатора, в текстовом поле '''Commands:'''. Поместите каждую команду в отдельной строке, используя клавишу Enter. Если введенная команда выполняется продолжительное время и не завершается через мгновение, введите символ «&amp;» после команды, чтобы система не ожидала пока команда завершится и продолжила запуск маршрутизатора, выполняя команду в фоновом режиме.<br /> # Нажмите кнопку '''Save Startup''' в нижней части страницы, чтобы сохранить команды в переменной ''rc_startup''. Нажатие кнопки '''Save Firewall''' сохранит команды в переменную ''rc_firewall''.<br /> <br /> == Как это работает ==<br /> Это позволяет сохранить введенный список команд в переменной ''rc_startup'' во флэш-памяти (такие переменные также называются «переменная NVRAM»). Так как флэш-память не стирается при перезапуске маршрутизатора, введенный сценарий останется и будет выполняться при каждом запуске маршрутизатора.<br /> <br /> == Сценарии Custom Script ==<br /> * Если внизу страницы раздела '''Administration → Command''' есть кнопка '''Save Custom Script''', можно сохранить команды, введенные в текстовое поле «Commands» в файл `/tmp/custom.sh`.<br /> * Этот пользовательский сценарий затем можно выполнить, набрав `sh /tmp/custom.sh` (без кавычек) в поле «Commands» и нажав кнопку «Run Commands» в нижней части страницы. Команда с символом «&amp;» в конце будет выполняться в фоновом режиме: `sh /tmp/custom.sh &amp;`.<br /> <br /> = Способ 2. NVRAM =<br /> == Предварительные требования ==<br /> <br /> * Умение использовать интерфейс [[SSH, Telnet и командная строка|командной строки]] маршрутизатора, подключившись по Telnet или SSH.<br /> * Определить последовательность команд, которые должны выполняться при каждом запуске маршрутизатора.<br /> * Предварительно проверить правильную работу команд в командной строке (необязательно).<br /> <br /> == Инструкция ==<br /> <br /> # Подключитесь к интерфейсу командной строки маршрутизатора, используя [[SSH, Telnet и командная строка|Telnet или SSH]].<br /> # Чтобы задать команды, которые будут выполняться при запуске маршрутизатора, используйте следующую команду: <br /> <br /> nvram set rc_startup=&quot;<br /> &lt;команда 1&gt;<br /> &lt;команда 2&gt;<br /> ...<br /> &lt;команда n&gt;<br /> &quot;<br /> <br /> При выполнении команды ''nvram commit'', переменная ''rc_startup'' сохраняется во флэш-памяти.<br /> <br /> nvram commit<br /> <br /> Хорошим приемом для ввода длинного списка команд, которые, например, были загружены из Интернета, является функция вставки утилиты Telnet из операционной системы Windows.<br /> <br /> В командной строке утилиты Telnet введите:<br /> <br /> nvram set rc_startup=&quot;<br /> <br /> Когда появится приглашение '''&gt;''', скопируйте текст из блокнота или браузера, щелкните правой кнопкой мыши значок Telnet в верхней части окна и выберите «Правка → Вставить». Вуаля! Весь сценарий в окне, каждая команда аккуратно размещена в отдельной строке. Теперь введите завершающий символ '''&quot;''' и нажмите Enter для сохранения.<br /> <br /> == Как это работает ==<br /> После ввода первой команды вы заметите, что приглашение изменилось на '''&gt;'''. Далее в каждой строке добавляются новые команды в переменную ''rc_startup''. '''Технически вы все еще набираете одну большую команду, даже если используете несколько строк.''' При вводе завершающего символа '''&quot;''' и нажатии Enter, вы увидите, что приглашение изменилось, и первая команда выполнена. Сценарий был добавлен в переменную rc_startup.<br /> <br /> На этом этапе можно проверить содержимое переменной rc_startup, выполнив команду:<br /> ~ # nvram get rc_startup<br /> <br /> === Совет: автоматизация веб-интерфейса ===<br /> <br /> Для автоматизации или тестирования веб-интерфейса можно использовать бесплатное дополнение iMacros для браузера Firefox. С его помощью можно записывать и воспроизводить определенные действия в интерфейсе браузера. Скачать его можно по адресу https://addons.mozilla.org/ru/firefox/addon/imacros-for-firefox/<br /> <br /> = Способ 3. Сценарии оболочки =<br /> Можно создать сценарий оболочки, который будет вызывать другие сценарии.<br /> <br /> Ввод прямо в переменную NVRAM подходит для небольшого количества команд, но если нужно выполнять много команд и легко управлять запускаемыми сценариями, лучший способ - использовать сценарии оболочки.<br /> <br /> Сценарии оболочки упрощают написание длинного списка команд, которые запускают исполняемые файлы, выполняют загрузку из Интернета (''wget''), устанавливают пакеты ''ipkg -d ram install'', копируют предварительно созданные файлы конфигурации из раздела флэш-памяти и т.д., прежде чем запустить нужную программу и делают так при каждом запуске.<br /> <br /> Это означает, что не обязательно экономить место во флэш-памяти маршрутизатора (NVRAM, которой довольно мало), вместо этого можно заполнить более ёмкую оперативную память без необходимости вручную переустанавливать и настраивать программу(ы) после каждой перезагрузки маршрутизатора.<br /> <br /> И, поскольку у каждой программы будет свой собственный сценарий, удаление программы из следующего запуска маршрутизатора так же просто, как удаление, перемещение или переименование файла запускаемого скрипта.<br /> <br /> == Предварительные требования ==<br /> <br /> * Умение использовать интерфейс [[SSH, Telnet и командная строка|командной строки]] маршрутизатора, подключившись по Telnet или SSH.<br /> * Определить последовательность команд, которые должны выполняться при каждом запуске маршрутизатора.<br /> * Умение копировать файлы на маршрутизатор и с него, используя SCP, [[WinSCP]] или другим способом.<br /> * Файловая система [[JFFS]] включена и работает должным образом.<br /> * Текстовый редактор, подходящий для редактирования файлов систем *nix (только для Windows): [http://www.textpad.com/ TextPad], [http://www.gena01.com/win32pad/ Win32Pad], [https://notepad-plus-plus.org/ Notepad++] или другой. Стандартный '''Блокнот не подойдет'''.<br /> * Предварительно проверить правильную работу команд в командной строке (необязательно).<br /> <br /> == Инструкция ==<br /> === Написать сценарий оболочки ===<br /> Напишите сценарий оболочки для каждой программы, которую хотели бы запустить при запуске маршрутизатора. Скрипт должен быть файлом * .startup.<br /> <br /> Сценарии оболочки должны выглядеть так:<br /> #!/bin/sh<br /> &lt;команда 1&gt;<br /> &lt;команда 2&gt;<br /> &lt;команда 3&gt;<br /> ...<br /> killall &lt;имя процесса команды n&gt;<br /> &lt;команда n&gt;<br /> <br /> Из-за особенностей системы DD-WRT написанный сценарий может запускаться периодически, а не только при запуске маршрутизатора (например, тема форума [http://www.dd-wrt.com/phpBB2/viewtopic.php?p=433984 default/my.wanup is running like 20 times]). Это означает, что если нужно убедиться, что только одна копия программы запускается одновременно, требуются дополнительные действия. В примере выше команда ''killall'' гарантирует, что &lt;команда n&gt; не будет запущена более одного раза одновременно. Предполагается, что все команды, которые появляются в сценарии до &lt;команда n&gt;, завершаются сразу после выполнения (например, ''cp'', ''wget'' или [[iptables]]).<br /> <br /> '''Пример''' сценария: kismet_server.startup<br /> &lt;pre&gt;<br /> #!/bin/sh<br /> # Создание каталога /tmp/usr/bin и переход в него<br /> mkdir /tmp/usr<br /> mkdir /tmp/usr/bin<br /> cd /tmp/usr/bin<br /> <br /> # Копирование исполняемого файла с домашнего веб-сервера<br /> wget http://192.168.1.2/kismet_server<br /> <br /> # Прервать все ранее запущенные экземпляры kismet_server<br /> killall -q kismet_server<br /> <br /> # Запустить kismet_server, используя конфигурационный файл /jffs/etc/kismet.conf<br /> /tmp/usr/bin/kismet_server -n -f /jffs/etc/kismet.conf<br /> &lt;/pre&gt;<br /> <br /> === Сохранить сценарий ===<br /> Включите [[JFFS]], чтобы получить пространство для хранения файлов. Сохраните скрипт на маршрутизаторе в каталоге ''/jffs/etc/config''. Может понадобиться создать этот каталог. Сделайте это либо в [[WinSCP]], либо в оболочке (SSH или Telnet) с помощью команды mkdir.<br /> <br /> === Сделать сценарий исполняемым ===<br /> Сделать сценарий исполняемым означает измененить права доступа файла на «700». Сделайте это через [[WinSCP]] или с помощью команды:<br /> ~ # chmod 700 /jffs/etc/config/&lt;scriptname&gt;.startup<br /> <br /> === Назначить запуск сценария ===<br /> Подробнее об этом см. статью [[Script Execution]].<br /> <br /> = Способ 4. Клиент Samba =<br /> Недостаток JFFS заключается в том, что она не работает на некоторых версиях прошивки и предоставляет мало пространства для хранения файлов. Если у вас есть сервер Samba или Windows Server, работающий в локальной сети, можно использовать невероятную опцию 'sambashare'. Это добавит маршрутизатору огромное количество доступного для записи пространства для хранения и можно будет задать сценарий, который будет автоматически запускаться, когда общий ресурс Samba монтируется при загрузке. Параметры общих ресурсов Samba можно найти в разделе ''Administration'' [[Веб-интерфейс|веб-интерфейса]]. Если параметр Startup script (см. [[Script Execution]]) задать в значение ''startup.sh'', каждый раз после подключения (монтирования) общего ресурса будет запускаться сценарий ''/tmp/smbshare/startup.sh''.<br /> <br /> Смотрите статью [[Сетевая файловая система Samba]] для подробной информации.<br /> <br /> = Ссылки =<br /> * [[LED Scripts]]<br /> * [[Script Execution]]<br /> * [[Useful Scripts]]<br /> <br /> [[Category: Русская документация]]<br /> [[Category: Конфигурирование]]</div> Tue, 24 Dec 2019 05:31:19 GMT Atatob http://wiki.dd-wrt.com/wiki/index.php/Talk:%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8