Jump to content

iFinder

Forum Members
  • Posts

    175
  • Joined

  • Last visited

Everything posted by iFinder

  1. Весной 2018 года на Keenetic Giga III с прошивкой 2.11.C.1.0-3 по инструкции уважаемого TheBB установил систему пакетов Entware: Затем установил несколько пакетов, в том числе пакет MC, с помощью которого написал свой первый Bash-скрипт и добавил его в автозагрузку. Позднее прошивка Keenetic неоднократно обновлялась и стала последняя 2.14.C.0.0-4, а скрипт продолжает успешно работать. Сейчас возникла необходимость правки Bash-скрипта и я через SSH-подключение попробовал запустить пакет MC, но получил: Command::Base error[7405600]: no such command: mc. Позднее выяснил, что ни одна команда, в том числе opkg list-installed не работает. На Роутере в менеджере Менеджер пакетов OPKG указан Сценарий initrc: /opt/etc/init.d/rc.unslung Что надо сделать, чтобы можно было получить доступ к ранее установленным пакетам, в частности к MC ?
  2. Я специально прописал, в чем была причина, чтобы участники форума учились на чужих ошибках. На нормальных форумах "закрыть" тему означает, что вопрос решен и больше нечего обсуждать ! Нет же Вам не терпится - обязательно нужно снова пофлудить !
  3. В очередной раз респект TheBB. Спасибо. Правильно с точкой в конце: tar cvzf /opt/backup.tar.gz -C /opt . Источник проблемы найден. Тему можно закрывать.
  4. К сожалению, последние посты своим отношением к участникам продолжают позорить этот форум !
  5. Эти команды полностью соответствуют справке по команде TAR: ~ # tar -h BusyBox v1.25.1 () multi-call binary. Usage: tar -[cxtzhvO] [-X FILE] [-T FILE] [-f TARFILE] [-C DIR] [FILE]... Create, extract, or list files from a tar file Operation: c Create x Extract t List f Name of TARFILE ('-' for stdin/out) C Change to DIR before operation v Verbose z (De)compress using gzip O Extract to stdout h Follow symlinks X File with names to exclude T File with names to include ~ # tar -h BusyBox v1.25.1 () multi-call binary. Usage: tar -[cxtzhvO] [-X FILE] [-T FILE] [-f TARFILE] [-C DIR] [FILE]... Create, extract, or list files from a tar file Operation: c Create x Extract t List f Name of TARFILE ('-' for stdin/out) C Change to DIR before operation v Verbose z (De)compress using gzip O Extract to stdout h Follow symlinks X File with names to exclude T File with names to include
  6. Обе команды взяты здесь (ссылка была указана еще в первом посте). Сообщение TheBB » 19 апр 2016, 09:32 Архивация/Backup: полная (всего содержания носителя) или выборочная (отдельных папок). Файл полной архивации может быть использован для восстановления системы, с выборочной - отдельных файлов/папок. Архив можно получить следующими командами: Код: Выделить всё | Строки: Вкл.Нумерацию · Развернуть tar cvzf /opt/backup.tar.gz -C /opt . на выходе получите архив backup.tar.gz со всем содержимым носителя. или Код: Выделить всё | Строки: Вкл.Нумерацию · Развернуть tar cvzf /opt/`date -I`-backup.tar.gz -C /opt . или Код: Выделить всё | Строки: Вкл.Нумерацию · Развернуть tar cvzf /opt/`date "+%Y-%m-%d"`-backup.tar.gz -C /opt . архив YYYY.MM.DD-backup.tar.gz с датой создания в имени и всем содержимым. или Код: Выделить всё | Строки: Вкл.Нумерацию · Развернуть tar cvzf /opt/`date "+%d-%m-%Y-%H-%M"`-backup.tar.gz -C /opt . архив DD-MM-YYYY-hh-mm-backup.tar.gz с датой и временем создания в имени, и всем содержимым Приведенные выше команды, создают архив со всем содержимым носителя, который (архив) может быть использован для восстановления системы. Ограничение на максимальный объем архива - не проверялось. Получить архив отдельных папок можно так: Код: Выделить всё | Строки: Вкл.Нумерацию · Развернуть tar cvzf /opt/backup-`date "+%Y-%m-%d_%H-%M"`.tar.gz -C /opt/ etc home root share var получите архив backup-YYYY-MM-DD_hh-mm.tar.gz с датой и временем создания в имени, и содержащий перечисленные папки (/etc;/home;/root;/share;/var). архив может использоваться для восстановления отдельных файлов (напр., настройки-конфиги) или отдельных папок
  7. Перед установкой Entware решил сделать резервную копию Entware-Keenetic. Через SSH-подключение дал команду: tar cvzf /opt/backup.tar.gz -C /opt Получил ошибку: tar: empty archive Что делаю не так ?
  8. Надеюсь, что АЛГОРИТМ ДЕЙСТВИЙ ДЛЯ НОВИЧКОВ: КАК ЗАПУСТИТЬ, ОСТАНОВИТЬ И ДОБАВИТЬ В АВТОЗАГРУЗКУ ПАКЕТ OPKG изменит ситуацию в этой теме к лучшему ! Думаю, что следующим интересным алгоритмом вполне может быть "Алгоритм действий для новичков: Отслеживание события в системе и выполнение соответствующего действия" (например, подключился новый пользователь к роутеру - отправляется почта/SMS/MQTT-сообщение). Благо похожие темы на форуме есть.
  9. Чтобы новичкам не тратить время, сообщаю, что, вероятно, LOR это: Linux.org.ru (сокращённо ЛОР) — веб-сайт, посвященный операционной системе Linux. На самом деле отношение к Linux имеет очень поверхностное, являясь, по сути, местом кучкования наивной и падкой на троллинг школоты, задротов, студентов/аспирантов (т. н. экспертов), изредка разжижаемое публикой из числа низкопробных сисадминов-эникейщиков.
  10. Просьбы к Модератору темы: 1. Для более удобного восприятия информации Участниками форума (дабы избежать ими прочтения абсолютно ненужных постов) прошу перенести алгоритм в начало темы. 2. Для более правильного содержания затронутой темы прошу переименовать тему на "Алгоритм действий для новичков: Как запустить, остановить и добавить в автозагрузку пакет OPKG"
  11. Как и планировал, восполняю отсутствие систематизированной информации на форуме, выкладывая ответ на свой вопрос в сжатом виде. Надеюсь, это будет способствовать как популяризации системы 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-сервера успешно автозапускается.
  12. vadimbn ! Ну вот, постепенно прояснется ситуация. Спасибо. Осталось узнать как переименовать тему ! И можно сводить все вместе
  13. vadimbn ! Спасибо за ценную информацию и потраченное время Буду признателен, если дадите ссылку на описание написания скриптов Entware. Прошу ни в коем случае не расценивать мои вопросы как попытку троллинга. Это для Вас элементарные вопросы. А для меня совсем наоборот, т.к. никогда до этого не сталкивался с Linux. Мой путь был банален и типичен для новичков на этом сайте: 1. За пару лет с помощью потрясающей официальной поддержки разобрался с NDMSv.2, даже нашел и сообщил о баге в прошивке. 2. Прочитал на самом роутере. "Mенеджер пакетов OPKG" Позволяет загрузить и установить пакеты OpenWRT на интернет-центр для расширения его функциональных возможностей. Установка пакетов не изменяет условия гарантии, однако техническая поддержка в этом случае не оказывается. Вопросы по работе интернет-центра с установленными пакетами можно задавать в форуме сообщества Keenetic на сайте forum.keenetic.net" 3. На другом сайте прочитал, что на OpenWRT можно поднять MQTT-сервер. Заинтересовался домашней автоматизацией. 4. Пришел на Ваш сайт и нашел исчерпывающую инструкцию по установке пакетов Entware от уважаемого TheBB 5. Воодушевленный успехом начал настраивать. За пару дней разобрался. Получилось. 6. Столкнулся с проблемой автозапуска. Поискал на форуме (см.мое первое сообщение). Информации изложенной в стиле инструкции по установке пакетов не нашел. 7. Обратился за помощью в получении информации в любом виде, в т.ч. ссылки на статьи. 8. Чтобы помощь была взаимной все еще хочу написать инструкцию новичкам как делать автозапуск. 9. Благодарил за информацию и не начинал препирательства. Неужели мои долго оставшиеся без ответа просьбы - дать ссылки по основам автозапуска в Entware, - дать ссылки на статьи по написанию скриптов, - как переименовать некоректно сформулированную тему можно расценить как попытку троллинга ? Разве в моем случае конструктивно давать общие советы типа "иди учи Linux" ? А где конкретика ? Яркий положительный пример - это инструкция по установке пакетов Entware от уважаемого TheBB. Именно она позволяет новичку начать использовать Entware. P.S. Мне значительно привычнее работать с информацией, чем вести пустую пересписку. Жаль так тратить драгоценное время и свое и читающих это участников форума. Написал все это только для того, чтобы всем было понятно, что речь идет не о попытке получить что-то на халяву за счет других, без собственных усилий.
  14. В очередной раз убеждаюсь, что по сути обсуждаемых вопросов Вам сказать, к сожалению, нечего. Приношу Вам свои извинения, если чем-то обидел. Дабы не давать Вам повод засорять тему флеймом прекращаю общение с Вами по неотносящимся к теме вопросам. Надеюсь, это даст Вам возможность побороть внутренний конфликт и успокоится.
  15. Эмпирическим путем было установлено, что скрипт запуска "S10_mosquitto" может содержать всего одну строку: mosquitto -c /opt/etc/mosquitto/mosquitto.conf -d Команды: /opt/etc/init.d/S10_mosquitto start /opt/etc/init.d/S10_mosquitto stop отмечаются в логе ошибкой: "Error: Address already in use" Цель добиться автозапуска достигнута. НО сделано явно не по уму. А как правильно ?
  16. Слишком грубо. Таким образом Вы позорите форум. Но я не об этом. В любом случае Вам спасибо: натолкнули меня на мысль, что здесь все очень просто. Может тогда написать в скрипте: mosquitto -c /opt/etc/mosquitto/mosquitto.conf -d mosquitto -c /opt/etc/mosquitto/mosquitto.conf -d Но что в таком случае делать с другими строками ? Например этими: #!/bin/sh PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin
  17. Это все-равно, что сообщать выпускнику школы - ты физики ядра не изучил, мы тебя в институт не примем. Скорее всего, Вы просто озлобились на людей - они действительно часто стали лениться. Но здесь не тот случай. К сожалению, Ваше поведение все больше становится похоже на Флуд и Флейм. Это Ваш авторитет не поднимет. Было бы разумно взять пример с уважаемого TheBB.
  18. В итоге вышел на вопрос: Как имея работающую вручную команду "mosquitto -c /opt/etc/mosquitto/mosquitto.conf -d" изложить её в скрипте запуска ?
  19. Итак, подвожу промежуточные итоги по автозапуску пакета (на примере mosquitto): 1. Создал скрипт запуска "S10_mosquitto" и разместил его в "/opt/etc/init.d/" 2. Сделал скрипт запуска исполняемым (в консоли SSH-сессии один раз выполнил команду): chmod +x /opt/etc/init.d/S10_mosquitto 3. Содержание скрипта пробовал в нескольких вариантах (с помощью пакета MC): #!/bin/sh PROCS=mosquitto ARGS="-c /opt/etc/mosquitto/mosquitto.conf -d" #!/bin/sh ENABLED=yes PROCS=mosquitto PREARGS="" DESC=$PROCS ARGS="-c /opt/etc/mosquitto/mosquitto.conf -d" PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin 4. При перезагрузке роутера пакет не автозапускается 5. Реакции на команды НЕТ: /opt/etc/init.d/S10_mosquitto start /opt/etc/init.d/S10_mosquitto stop 6. Запуск пакета командой вручную проходит успешно: mosquitto -c /opt/etc/mosquitto/mosquitto.conf -d КУДА КОПАТЬ ДАЛЬШЕ ?
  20. К сожалению: автозапуск после перезагрузки НЕ разботает. на перезапуск и остановку никак не реагирует.
  21. В итоге получается, что содержание скрипта запуска должно быть таким (на примере mosquitto): #!/bin/sh PROCS=mosquitto ARGS="-c /opt/etc/mosquitto/mosquitto.conf -d" Так ? И это все ?
  22. ОГРОМНОЕ СПАСИБО ! Начинающие участники форума оценили бы, если это появится среди прикрепленных тем (в шапке) ! Создать скрипт запуска, разместить его в /opt/etc/init.d/ и сделать его исполняемым. 1. На форуме раньше я встречал SNNимя, т.е. без "_". Или SNN_имя это для для entware. А SNNимя для Entware-Keenetic ? 2. Чтобы сделать скрипт запуска исполняемым надо в консоли SSH-сессии один раз выполнить команду: chmod +x /opt/etc/init.d/SNN_имя Правильно ? По крайне мере у меня при выполнении этой команды файл /opt/etc/init.d/SNN_имя стал в MC отображаться со звездочкой (а я то думал, что она означает 1). ПРИМЕЧАНИЕ: MC - это GNU Midnight Commander - это визуальный файловый менеджер. Это многофункциональное полноэкранное текстовое приложение, которое позволяет копировать, перемещать и удалять файлы и деревья каталогов, искать файлы и запускать команды в подоболочке. Внутренний просмотрщик и редактор также включены. Его, как пакет, надо также предварительно установить. Как создать с его помощью новый файл я пока не знаю. Поэтому скопировал любой имеющийся и затем его переименовал в SNN_имя. 3. А что нужно указывать в самом скрипте ? Анализ фрагментов, имеющихся на форуме, всегда начинается с #!/bin/sh а что дальше должно быть ? В одном месте этого форума, например, так: ENABLED=yes PROCS=microdc2 (в общем случае "имя") ARGS="" PREARGS="" DESC=$PROCS PATH==/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin . /opt/etc/init.d/rc.func В другом форуме, например для OpenWRT, так: START=80 #APP=`which mosquitto` (в общем случае "имя") APP=`mosquitto`
×
×
  • Create New...