Пакет luci-app-commands решает конкретную задачу: выполнение shell-команд на роутере OpenWrt прямо из веб-интерфейса LuCI, без подключения по SSH. Если после установки пакета пункт с командами не появился в меню или кнопка запуска возвращает пустой результат, чаще всего причина в отсутствии конфигурационного файла /etc/config/luci_commands либо в том, что веб-сервер LuCI не был перезапущен после установки.
Ниже разберём установку пакета, структуру его конфигурации, типичные ошибки и меры безопасности. Материал ориентирован на стандартную сборку OpenWrt с LuCI; расположение пунктов меню может незначительно отличаться в зависимости от версии прошивки и темы оформления.
Что такое luci-app-commands и зачем он нужен
luci-app-commands — это модуль для веб-интерфейса LuCI, который позволяет заранее описать набор shell-команд и запускать их нажатием кнопки в браузере. Результат выполнения (stdout и stderr) отображается прямо на странице, что удобно для быстрой диагностики без терминала.
Типичные сценарии использования:
- 📡 Проверка состояния сети:
ping,traceroute, вывод таблицы маршрутов. - 🔄 Перезапуск сервисов: например,
/etc/init.d/openvpn restartодной кнопкой. - 📊 Просмотр диагностики:
logread,uptime,df -hбез входа по SSH. - 🛠 Запуск собственных скриптов обслуживания, размещённых на роутере.
Модуль не заменяет полноценный SSH-доступ: интерактивные команды, требующие ввода во время выполнения, через него работать не будут. Он рассчитан на заранее подготовленные, предсказуемые операции.
Установка пакета
Установка выполняется стандартным менеджером пакетов opkg. Подключитесь к роутеру по SSH и обновите списки пакетов, затем установите модуль:
opkg update
opkg install luci-app-commands
После установки необходимо перезапустить веб-сервер uhttpd, иначе новый пункт меню может не появиться:
/etc/init.d/uhttpd restart
Также пакет можно найти и установить через сам LuCI: раздел System → Software, поиск по имени luci-app-commands. Перед установкой нажмите обновление списка пакетов, иначе opkg может сообщить, что пакет не найден.
⚠️ Внимание: если на роутере мало свободного места во внутренней памяти, установка пакетов может завершиться ошибкой. Проверьте свободное пространство командой
df -hдо начала установки.
После перезапуска веб-сервера в LuCI появляется раздел System → Custom Commands (название пункта может отличаться в зависимости от версии и перевода).
Настройка собственных команд
Команды описываются в конфигурационном файле /etc/config/luci_commands в формате UCI. Каждая запись содержит как минимум имя (отображается в интерфейсе) и саму команду. Пример структуры:
config command
option name 'Перезапуск VPN'
option command '/etc/init.d/openvpn restart'
После редактирования файла изменения обычно подхватываются при обновлении страницы LuCI; если новая команда не появилась, перезапустите uhttpd. Часть настроек доступна и через веб-интерфейс в самом разделе Custom Commands, где можно добавлять и удалять записи без правки файла вручную.
☑️ Проверка после добавления команды
Порядок безопасной проверки новой команды такой: сначала выполните её вручную в SSH-сеансе и убедитесь, что она отрабатывает без запроса ввода и возвращает ожидаемый результат. Только после этого добавляйте её в конфигурацию LuCI. Это исключает ситуацию, когда кнопка в интерфейсе есть, а команда молча завершается с ошибкой.
Типичные ошибки и их диагностика
Самая частая жалоба — кнопка есть, но вывод пустой или появляется сообщение об ошибке. Возможные причины стоит проверять в таком порядке:
| Симптом | Возможная причина | Что проверить |
|---|---|---|
| Пункт меню отсутствует | uhttpd не перезапущен после установки | Перезапуск /etc/init.d/uhttpd restart |
| Пустой вывод команды | Команда завершается с ошибкой или требует ввода | Ручной запуск команды через SSH |
| Команда не отображается в списке | Синтаксическая ошибка в UCI-файле | Проверка uci show luci_commands |
| Скрипт не запускается | Нет прав на исполнение | ls -l на файл скрипта, chmod +x |
| Ошибка доступа в LuCI | Ограничения ACL для пользователя | Права учётной записи в разделе System → Administration |
Для диагностики полезен просмотр системного журнала командой logread сразу после нажатия кнопки: если команда падает, в логе часто видно сообщение об ошибке. Также проверьте вывод uci show luci_commands — он покажет, как система реально распарсила вашу конфигурацию, и поможет найти опечатки.
Безопасность при работе с командами
Каждая команда, добавленная в luci-app-commands, выполняется с правами процесса веб-интерфейса — фактически с правами root. Это означает, что любой, кто имеет доступ к LuCI, может запустить любую из описанных команд. Поэтому в конфигурацию нельзя добавлять команды с деструктивным действием без подтверждения: очистку разделов, сброс настроек, удаление файлов.
⚠️ Внимание: не открывайте веб-интерфейс LuCI в интернет и не используйте простые пароли root. В сочетании с luci-app-commands скомпрометированный доступ к LuCI равносилен полному контролю над роутером.
Разумные меры предосторожности:
- 🔐 Ограничьте доступ к LuCI только из локальной сети или через VPN.
- 🧾 Добавляйте в конфигурацию только команды с предсказуемым, обратимым результатом.
- 👤 Если версия OpenWrt поддерживает разграничение прав в LuCI, выдайте доступ к разделу команд только доверенным учётным записям.
- 📝 Проверяйте содержимое
/etc/config/luci_commandsпосле любых сторонних изменений в системе.
Почему нельзя добавлять интерактивные команды
Команды вроде passwd, top или любые скрипты, ожидающие ввода с клавиатуры, при запуске через LuCI «зависнут» или завершатся с ошибкой: у процесса нет терминала для взаимодействия. Используйте только неинтерактивные команды, а для скриптов предусмотрите неинтерактивный режим через параметры или файлы ответов.
Полезные примеры команд для повседневной диагностики
Набор команд, которые чаще всего добавляют в модуль, строится вокруг диагностики и перезапуска сервисов. Вам могут пригодиться вывод состояния интерфейсов (ifstatus wan через ubus), просмотр аренды DHCP, проверка доступности шлюза и перезапуск проблемных служб.
config command
option name 'Статус WAN'
option command 'ubus call network.interface.wan status'
При добавлении команд с пробелами и спецсимволами следите за экранированием в UCI — проще всего обернуть сложную логику в отдельный скрипт и вызывать из конфигурации именно его. Так конфигурация остаётся читаемой, а отладку вы проводите над скриптом в терминале.
Удаление пакета
Если модуль больше не нужен, удалите его стандартным способом:
opkg remove luci-app-commands
Файл конфигурации /etc/config/luci_commands при этом может остаться в системе — это нормально для opkg. Если вы планируете полностью убрать следы модуля, удалите и его, предварительно сохранив копию, если команды понадобятся позже. После удаления пакета перезапустите uhttpd, чтобы пункт меню исчез из интерфейса.
Часто задаваемые вопросы
Почему после установки luci-app-commands пункт меню не появился?
Наиболее вероятная причина — веб-сервер uhttpd не был перезапущен. Выполните /etc/init.d/uhttpd restart и обновите страницу LuCI с очисткой кэша браузера. Также проверьте, что пакет действительно установлен: opkg list-installed | grep luci-app-commands.
Можно ли добавлять команды через веб-интерфейс, а не правкой файла?
Да, в разделе Custom Commands обычно доступно добавление и удаление записей через форму. Изменения записываются в тот же файл /etc/config/luci_commands. Точный набор доступных опций зависит от версии пакета.
Команда работает в SSH, но не работает через LuCI. Что делать?
Проверьте три вещи: не требует ли команда интерактивного ввода, корректно ли она записана в UCI (uci show luci_commands) и есть ли права на исполнение у вызываемого скрипта. Также посмотрите logread сразу после нажатия кнопки.
Безопасно ли использовать luci-app-commands на роутере с доступом из интернета?
Открывать LuCI в интернет не рекомендуется независимо от установленных модулей. С luci-app-commands риск выше: злоумышленник, получивший доступ к веб-интерфейсу, сможет выполнять подготовленные команды с правами root. Ограничьте доступ к LuCI локальной сетью или VPN.
Куда пропадает конфигурация при обновлении прошивки?
При обновлении OpenWrt с сохранением настроек файлы из /etc/config/ обычно сохраняются, но сам установленный пакет нужно ставить заново. После обновления переустановите luci-app-commands и проверьте, что конфигурация на месте и команды работают.