Jump to content

Question

Posted

Как запустить, остановить и добавить в автозагрузку пакет OpenWRT ?

К сожалению, поиск по форуму и интернету не увенчался успехом.

Заранее благодарен

Recommended Posts

  • 0
Posted (edited)

Как и планировал, восполняю отсутствие систематизированной информации на форуме, выкладывая ответ на свой вопрос в сжатом виде.

Надеюсь, это будет способствовать как популяризации системы Entware (как мощного расширения домашних роутеров Keenetic), так и средств домашней автоматизации (интернета вещей).

 

АЛГОРИТМ ДЕЙСТВИЙ ДЛЯ НОВИЧКОВ: КАК ЗАПУСТИТЬ, ОСТАНОВИТЬ И ДОБАВИТЬ В АВТОЗАГРУЗКУ ПАКЕТ OPKG

В качестве образца мною был выбран нужный мне для достижения своих целей пакет mosquitto-ssl (реализация пакета MQTT-сервера).

 

ПОДГОТОВКА:

1. Установил систему пакетов Entware, как указано в инструкции уважаемого TheBB.

2. Выяснил соответствие путей: \\ExtraII\Entware == /opt, анализируя это:

Путь при удаленном доступе на флэшку, вставленной в USB-разъем: \\ExtraII\Entware\etc\init.d\rc.unslung

Появившийся в поле WEB-интефрейса роутера "Приложения - OPKG - Сценарий initrc:" путь: /opt/etc/init.d/rc.unslung

3. Подключился к роутеру через его SSH-интерфейс с помощью программы PUTTY 

4. Установил пакет mosquitto-ssl:

opkg install mosquitto-ssl

5. Для выполнения настроек (управление файловой структурой и редактирование файлов) установил пакет mc (Midnight Commander is a visual file manager. It's a feature rich full-screen text mode application that allows you to copy, move and delete files and whole directory trees, search for files and run commands in the subshell. Internal viewer and editor are included as well.)

opkg install mс

6. Выполнил настройку установленного пакета MQTT-сервера (это отдельная тема) .

 

ЗАПУСК ПАКЕТА ВРУЧНУЮ:

6. В результате выполнения п.4  выяснилось, что запуск этого пакета вручную надо делать с параметрами:

mosquitto -c /opt/etc/mosquitto/mosquitto.conf -d

 

АВТОЗАПУСК ПАКЕТА:

За предоставленную информацию отдельное спасибо уважаемому TheBB.

7. С помощью пакета Midnight Commander создал файл S10_mosquitto.

ПРИМЕЧАНИЕ: Для автостарта, имя созданного скрипта должно начинаться с `S`, либо, для ручного старта набрать: `/opt/etc/init.d/SNN_имя start` , где NN - присвоенный номер. Скрипты запуска, начинающиеся с `K` исключаются из автозапуска (для ручного запуска см. пример с `S`)

ПРИМЕЧАНИЕ: Так как я не знал как создать файл, то просто скопировал и очистил один из имевшихся.

8. С помощью Midnight Commander переместил созданный файл в папку /opt/etc/init.d/

9. Сделал это файл исполняемым командой:

chmod +x /opt/etc/init.d/S10_mosquitto

ПРИМЕЧАНИЕ: В результате в Midnight Commander файл стал отображаться другим цветом и со звездочкой

10. Благодаря уважаемому vadimbn, за что ему большое спасибо, стало известно: 

Написание скриптов - это слишком обширная тема, придется тратить много времени и приводить очень много ссылок. В Unix/Linux существует очень много разнообразных интерпретаторов, на языках которых можно писать скрипты. Это и разнообразные оболочки-shell (bash, sh, tcsh, ksh, zsh и другие), и интерпретируемые языки программирования (python, perl, php, ruby - это только самые известные из них). Скрипты на shell могут содержать много строк, часть из которых содержит команды самого shell, а часть - команды операционной системы Unix/Linux, которые всегда присутствуют в ней либо в виде сборки busybox (набор команд для встраиваемых систем, обычно это одна программа и куча символических ссылок на нее),  либо в виде отдельных приложений. Можно писать интерактивные приложения, можно писать скрипты автозагрузки, скрипты для автоматизации вашей деятельности. Написание программ на скриптовых языках - это тема для многих и многих весьма объемных томов. Хотите найти как писать скрипты на bash - ну так и пишите в поисковике "bash скрипты".

Первые символы в самой первой строке #! - после этого так называемого шебанга ставится программа-интерпретатор скрипта. Скрипт может быть написан на bash, тогда строка примет вид: #!/bin/bash
или на perl, тогда строка будет такой: #!/usr/bin/perl
Иными словами, если у скрипта есть права на запуск, то при его запуске загрузчик анализирует эту строку и передает скрипт на исполнение интерпретатору, указанному в этой строке.

Строка PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin инициирует переменную окружения PATH для этого скрипта. Эта переменная есть и в Windows, если вы давно пользуетесь этой системой, то могли сталкиваться с ней. Эта переменная описывает пути, где нужно искать исполняемые файлы - программы и скрипты.

11. Написал самый примитивный скрипт запуска - в файле S10_mosquitto прописал всего одну строку:

mosquitto -c /opt/etc/mosquitto/mosquitto.conf -d

ПРИМЕЧАНИЕ: Вставку содержимого буфера в текст редактируемого файла в МС удобно делать нажатием Shift-Insert

 

ОСТАНОВКА ПАКЕТА:

12. Также благодаря  vadimbn стало известно:

Скрипты для автозапуска демонов в системе могут писаться с использованием некоторых соглашений, проверок, переменных среды. При этом хорошо бы руководствоваться здравым смыслом. Если вам для запуска вашего приложения будет достаточно одной строки: путь/до/приложения/приложение -некие -параметры -приложения и оно не требует корректного завершения (то есть, например, не пишет информацию ни в какие файлы), то зачем городить огород? Достаточно будет этой одной строчки. Если нужны корректные start/stop скрипта - то для этого надо вводить проверки текущего состояния приложения. Лучше проанализировать как созданы уже имеющиеся скрипты, использовать их в качестве примеров. Без этих проверок ваши команды:

/opt/etc/init.d/S10_mosquitto start

/opt/etc/init.d/S10_mosquitto stop

не имеют смысла, Ваш скрипт содержит только одну строку для запуска приложения, которая всегда выполняется, независимо от параметров stop и start. Это и приводит к появлению ошибки:

Error: Address already in use

так как приложение уже работает и занимает сокет.

13. Так как потребности в остановке пакета mosquitto для моих целей у меня не было, да и получение информации от участников форума оказалось слишком изматывающим, то и прорабатывать эту возможность я дальше не стал. Но буду признателен, если кто-то восполнит этот пробел.

 

РЕЗУЛЬТАТЫ:

14. Тестовая перезагрузка роутера показала, что установленный пакет MQTT-сервера успешно автозапускается.

Edited by iFinder
  • Upvote 5
  • 0
Posted

Просьбы к Модератору темы:

1. Для более удобного восприятия информации Участниками форума (дабы избежать ими прочтения абсолютно ненужных постов) прошу перенести алгоритм в начало темы.

2. Для более правильного содержания затронутой темы прошу переименовать тему на "Алгоритм действий для новичков: Как запустить, остановить и добавить в автозагрузку пакет OPKG"

  • 0
Posted (edited)

 

1 час назад, iFinder сказал:

Разъясните, пожалуйста что Вашу мысль. что такое LOR ?

Чтобы новичкам не тратить время, сообщаю, что, вероятно, LOR это:

Linux.org.ru (сокращённо ЛОР) — веб-сайт, посвященный операционной системе Linux.

На самом деле отношение к Linux имеет очень поверхностное, являясь, по сути, местом кучкования наивной и падкой на троллинг школоты, задротов, студентов/аспирантов (т. н. экспертов), изредка разжижаемое публикой из числа низкопробных сисадминов-эникейщиков.

Edited by iFinder
  • 0
Posted
В 23.04.2018 в 10:34, Александр Рыжов сказал:

Надеюсь, что ваш энтузиазм не закончится вместе с этой темой. Мне жаль, что беседа стилем стала схожа с филиалом LOR'а. Это скорее исключение.

Надеюсь, что АЛГОРИТМ ДЕЙСТВИЙ ДЛЯ НОВИЧКОВ: КАК ЗАПУСТИТЬ, ОСТАНОВИТЬ И ДОБАВИТЬ В АВТОЗАГРУЗКУ ПАКЕТ OPKG изменит ситуацию в этой теме к лучшему !

Думаю, что следующим интересным алгоритмом вполне может быть "Алгоритм действий для новичков: Отслеживание события в системе и выполнение соответствующего действия" (например, подключился новый пользователь к роутеру - отправляется почта/SMS/MQTT-сообщение). Благо похожие темы на форуме есть.

  • 0
Posted

прошу помощи. не могу понять, как мне вручную создать скрипт. не знаю, как кратко описать, по этому пишу подробно.

установлены пакеты node и node-npm.

потом я делаю cd tmp/mnt/номер жёсткого диска/название папки с содержимым.

находяcь в этой папке выполняю node index.js

я понимаю, что чтобы это выполнялось в автозапуске, то надо создать скрипт в init.d. понимаю, что номер в названии это порядок записи. но что там писать я не понимаю. пытаюсь понять по примеру находящихся там, но не понимаю. может кто помочь в составлении скрипта?

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...