-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Entware Manager — веб-интерфейс для управления системой Keenetic + Entware: пакеты, службы, сеть, SMART, терминал, логи и мониторинг.
Версия интерфейса подставляется из
/opt/web_entware/version.json.
🍃 Архитектура: Все CGI-эндпоинты — это Go-бинарники (7 шт: entware-pkg, entware-stats, entware-net, entware-logger, entware-services, entware-monitor, entware-smart). Бинарники лежат в /opt/web_entware/cgi-bin/go/. Диспетчер go.cgi (55 симлинков на него) определяет, какой бинарник и ENDPOINT запустить по имени файла и каталога.
Отображает общую информацию о системе:
- Модель устройства, имя хоста, архитектура, версия ядра, время работы.
- Использование оперативной памяти (с прогресс-баром).
- Информация о временных файловых системах (tmpfs) — кликабельные точки монтирования ведут в файловый менеджер.
- Количество установленных и доступных пакетов Entware.
- Использование дискового пространства для
/opt. - Список смонтированных блочных устройств.
Таблицы tmpfs и блочных устройств сортируются кликом по заголовку столбца. Повторный клик меняет порядок (▲/▼).
В нижней части страницы — блок Полезные ссылки, редактируется во вкладке «Настройки».
В сайдбаре отображаются температуры CPU и WiFi на одной строке. Клик открывает модальное окно с двумя графиками (CPU сверху, WiFi снизу):
- CPU — график температуры процессора за 7 дней (зелёная линия).
- WiFi — график температур адаптеров WiFi0 (синяя) и WiFi1 (красная) за 7 дней.
- Клик по статам — значения Мин/Средняя/Макс/Сейчас подсвечивают точку на графике с тултипом.
- Тултип — при наведении показывается дата и точное значение (вплоть до секунды).
- Данные сохраняются в
/tmp/temp_history/каждые 30 секунд (файлыcpu.YYYY-MM-DDиwifi.YYYY-MM-DD, хранение 7 дней).
Список установленных пакетов. Для каждого есть кнопка «Удалить». Клик по строке открывает модальное окно с деталями (версия, описание, дата установки). Поле поиска фильтрует список.
opkg list-installed # просмотр установленных пакетов
opkg remove <пакет> # удаление пакета
opkg info <пакет> # подробная информация о пакете
Список всех пакетов из репозитория Entware: версия, описание, кнопка «Установить». Данные кешируются в браузере на 1 час для ускорения загрузки при переключении вкладок.
opkg list # просмотр доступных пакетов
opkg install <пакет> # установка пакета
opkg update # обновление списков пакетов
Позволяет обновить локальные списки пакетов и просмотреть пакеты с доступными новыми версиями (текущая и новая версия, кнопка «Обновить»).
opkg update # обновить списки пакетов
opkg list-upgradable # показать пакеты с обновлениями
opkg upgrade <пакет> # обновить конкретный пакет
Интерактивный монитор процессов htop, запущенный через ttyd. Если внутри iframe не работают функциональные клавиши — используйте кнопку «Открыть в новой вкладке».
Горячие клавиши htop:
-
F6— сортировка по выбранному столбцу -
F9— отправка сигнала процессу (kill) -
F3— поиск -
F5— древовидный режим -
q— выход
Полноценный доступ к командной строке роутера через веб-терминал ttyd. По умолчанию порт 9089. При первом запуске может потребоваться пароль (задаётся во вкладке «Настройки»).
Модуль мониторинга сети: интерфейсы, маршруты, ARP-таблица и события watchdog демона.
Отображает активные сетевые интерфейсы с IP-адресами, статус WiFi и WAN. Обновляется при загрузке страницы статистики.
- Интерфейсы — список с состоянием (UP/DOWN), IP/MAC, типом и скоростью. UP — зелёный, DOWN — красный. Переключатель «Скрыть неизвестные» прячет UNKNOWN.
- Маршруты — таблица маршрутизации (destination, gateway, interface, metric).
-
ARP — таблица с IP, MAC, интерфейсом, состоянием и именем хоста (
getent hosts). - События — лог событий от watchdog демона.
CGI-эндпоинты:
/opt/web_entware/cgi-bin/network_status.cgi # JSON для sidebar виджета
/opt/web_entware/cgi-bin/network/status.cgi # статус демона (running, pid)
/opt/web_entware/cgi-bin/network/interfaces.cgi # список интерфейсов
/opt/web_entware/cgi-bin/network/routes.cgi # таблица маршрутизации
/opt/web_entware/cgi-bin/network/arp.cgi # ARP таблица
/opt/web_entware/cgi-bin/network/events.cgi # события (limit=N)
/opt/web_entware/cgi-bin/network/config.cgi # чтение/сохранение конфига (GET/POST)
/opt/web_entware/cgi-bin/network/action.cgi # управление демоном (action=start|stop|restart)
curl -s http://localhost:8087/entware-cgi/network/interfaces.cgi | jq .
curl -s http://localhost:8087/entware-cgi/network/arp.cgi | jq .
curl -s 'http://localhost:8087/entware-cgi/network/events.cgi?limit=5' | jq .
Watchdog демон отслеживает состояние сети и пишет события в лог:
- Переход интерфейса в DOWN
- Восстановление интерфейса (UP)
- Изменение IP-адреса
- Пропадание интернета (ping 8.8.8.8)
Управление демоном:
/opt/web_entware/network_watchdog.sh start|stop|restart|status
curl -X POST 'http://localhost:8087/entware-cgi/network/action.cgi?action=start'
curl -X POST 'http://localhost:8087/entware-cgi/network/action.cgi?action=stop'
curl -X POST 'http://localhost:8087/entware-cgi/network/action.cgi?action=restart'
Конфигурация — файл /opt/web_entware/network_config.json (интервалы, список интерфейсов для мониторинга):
cat /opt/web_entware/network_config.json | jq .
curl -X POST -H 'Content-Type: application/json' -d '{"interval":60}' \
http://localhost:8087/entware-cgi/network/config.cgi
Troubleshooting:
ps | grep network_watchdog
cat /tmp/network_watchdog.pid
sh -x /opt/web_entware/network_watchdog.sh
which ip && which ping && which jq
ip addr; ip route; ip neigh
Мониторинг состояния дисков через S.M.A.R.T. (HDD, SSD, NVMe, USB-флешки).
Таблица: модель, серийный номер, размер, тип, температура, здоровье, Power-On Hours.
Колонка Health:
- 🟢 Зелёный — все атрибуты в норме (
attr_health=ok) - 🟠 Оранжевый — критический атрибут близок к порогу (
warning) - 🔴 Красный — порог превышен или health ≠ PASSED (
critical) - ⚪ Серый — USB-флешка без SMART (
inactive)
Критические атрибуты: ID 5 (Reallocated Sectors), 10 (Spin Retry), 187 (Uncorrectable Errors), 196 (Reallocation Events), 197 (Pending Sectors), 198 (Uncorrectable Sectors).
Тип диска окрашен: HDD — синий, SSD — зелёный, NVMe — фиолетовый, USB — серый.
-
Устройство — информация о диске (
smartctl -i) -
Размер — таблица разделов с прогресс-барами (
df -h) - Health (бейдж) — детальный отчёт самодиагностики
- Температура — диалог запуска самотеста (короткий ~2 мин, полный ~60–120 мин, conveyance ~5 мин)
- Строка целиком — все SMART-атрибуты с цветовой кодировкой важности
ID, имя, Value, Worst, Threshold, Raw, Статус. Критические — красным, важные — жёлтым. Клик на имя — подсказка с описанием (19 предопределённых атрибутов).
Интерфейс опрашивает статус каждые 5 секунд до 20 минут.
opkg install smartmontools smartmontools-drivedb coreutils-timeout sudo
mkdir -p /opt/etc/sudoers.d
echo 'nobody ALL=(ALL) NOPASSWD: /opt/sbin/smartctl' > /opt/etc/sudoers.d/entware-smartctl
chmod 440 /opt/etc/sudoers.d/entware-smartctl
smart.cgi?action=list # список всех дисков
smart.cgi?action=attributes&device=sda # атрибуты
smart.cgi?action=health&device=sda # здоровье
smart.cgi?action=info&device=sda # информация
smart.cgi?action=usage&device=sda # разделы (df)
smart.cgi?action=selftest&device=sda # статус теста (GET)
# Запуск теста (POST):
curl -X POST 'http://localhost:8087/entware-cgi/smart.cgi' \
-d 'action=selftest&device=sda&type=short'
Список служб Entware (скрипты в /opt/etc/init.d/ с префиксами S/K). Показываются:
- Статус — running / stopped (по наличию PID)
- PID
- Автозапуск — скрипт с префиксом S запускается при старте, K/без префикса — нет
- Действия — Запустить / Остановить / Перезапустить / переключение «Авто»
При изменении автозапуска скрипт переименовывается (меняется префикс S/K).
/opt/etc/init.d/S<служба> start # запуск службы
/opt/etc/init.d/S<служба> stop # остановка
/opt/etc/init.d/S<служба> restart # перезапуск
Демон отслеживает состояние служб и реагирует на их остановку. Лог: /tmp/entware/logs/service_events.log.
Как это работает: демон периодически проверяет PID каждой службы. Если PID изменился — служба была перезапущена. Если PID пропал — служба упала.
Переключатели:
-
Кастомный список — режим
custom, поле ввода процессов через запятую - Исключения — список не мониторящихся служб
- Автоперезапуск — перезапуск упавшей службы через init.d
Режимы: initd (по умолчанию, все /opt/etc/init.d/S*) и custom (только из watch_list).
Автоперезапуск: при падении → если auto_restart:true → найти init.d скрипт → SXXservice restart → проверить запуск → записать в лог.
⚠️ Важно: после автоперезапуска действует cooldown 60 секунд — повторный автоперезапуск той же службы блокируется.
Исключения по умолчанию: service_watchdog (демон), dropbear (SSH), kvas-ws (KVAS). Можно добавлять свои.
CGI-эндпоинты:
/service_watchdog/status.cgi # статус демона (running, pid, config)
/service_watchdog/action.cgi # управление (action=start|stop|restart)
/service_watchdog/events.cgi # события (limit=N)
/service_watchdog/config.cgi # конфигурация (GET/POST)
curl -s http://localhost:8087/entware-cgi/service_watchdog/status.cgi | jq .
curl -s 'http://localhost:8087/entware-cgi/service_watchdog/events.cgi?limit=10' | jq .
/opt/web_entware/service_watchdog.sh start|stop|restart|status
Конфигурация (/opt/web_entware/service_config.json):
{
"enabled": true,
"interval": 10,
"mode": "initd",
"watch_list": ["lighttpd","cron","ttyd"],
"auto_restart": false,
"exclude_list": ["dropbear","kvas-ws","service_watchdog"],
"log_to_monitor": true,
"pid_history_days": 7
}Изменение через CGI:
curl -X POST -H 'Content-Type: application/json' \
-d '{"mode":"custom","watch_list":["lighttpd","cron"],"auto_restart":false}' \
http://localhost:8087/entware-cgi/service_watchdog/config.cgi
curl -X POST -H 'Content-Type: application/json' -d '{"auto_restart":true}' \
http://localhost:8087/entware-cgi/service_watchdog/config.cgi
curl -X POST -H 'Content-Type: application/json' -d '{"exclude_list":null}' \
http://localhost:8087/entware-cgi/service_watchdog/config.cgi # очистить
Файлы демона:
/tmp/service_watchdog.pid # PID процесса
/tmp/service_watchdog_pids.json # история PID служб
/tmp/entware/logs/service_events.log # лог событий (ротация при >1MB)
/tmp/service_watchdog_<service>.lock # lock для cooldown (автоперезапуск)
Примеры событий:
2026-04-06 12:00:15 [INFO] [SERVICE] lighttpd: started (pid=1234)
2026-04-06 12:00:45 [WARN] [SERVICE] ttyd: restarted (old_pid=9012 -> new_pid=9034)
2026-04-06 12:01:00 [ERROR] [SERVICE] AdGuardHome: stopped (old_pid=1111)
2026-04-06 12:01:05 [INFO] [SERVICE] AdGuardHome: auto_restart attempting...
2026-04-06 12:01:07 [INFO] [SERVICE] AdGuardHome: auto_restart_ok (new_pid=2222)
2026-04-06 12:02:00 [INFO] [SERVICE] AdGuardHome: auto_restart skipped (cooldown 60s)
🔧 Исправления v1.07.4: убран
sleep: invalid number 'null'— при отсутствии поляintervalприменяются дефолты из jq (.interval // 10). Исправлен конфликт PID-паттернов:watchdog.sh/service_watchdog.sh/network_watchdog.shтеперь управляются независимо.
Два независимых редактора:
-
Системный crontab — через
crontab -l(обычно/etc/crontabs/root). -
Entware crontab — файл
/opt/etc/crontab.
При сохранении системного выполняется проверка синтаксиса; при сохранении /opt/etc/crontab демону cron посылается HUP.
crontab -l # просмотр системного crontab
crontab -r # удалить все задачи
cat /opt/etc/crontab # просмотр файла Entware
kill -HUP $(pidof cron) # перезагрузка cron после изменения
Объединяет управление ttyd и редактирование ссылок.
Управление ttyd: состояние процессов htop (порт 8089) и терминала (9089), кнопки Запустить/Остановить/Перезапустить. Пароль терминала не сохраняется в бэкапах.
Управление ссылками: список ссылок главной страницы (иконка, название, URL). Сохраняются в /opt/web_entware/links.json и видны всем устройствам.
Демон автоматически отслеживает процессы с аномальной нагрузкой CPU и завершает их.
- Демон защиты — фоновый процесс, статус и PID на вкладке.
-
Топ процессов — 5 процессов с наибольшей нагрузкой CPU (из
ps -e -o pid,pcpu,etime,comm), кнопка «Убить» (SIGKILL). -
Лог событий —
/opt/temp/logs/monitor.log, можно просмотреть и очистить.
Настройки: глобальный переключатель, интервал сканирования (рекомендуется 30–60 сек), индивидуальный режим, порог CPU %, время непрерывной нагрузки, игнорируемые процессы (по умолчанию lighttpd, cron, ttyd, watchdog, ps), максимум процессов для сканирования (10–1000, по умолчанию 200). После сохранения демон перечитывает конфиг (HUP).
/opt/web_entware/watchdog.sh # ручной запуск демона
kill -TERM $(cat /tmp/watchdog.pid) # остановка
cat /opt/temp/logs/monitor.log # просмотр лога
/opt/bin/ps -e -o pid,pcpu,comm --no-headers | sort -k2 -rn | head
Открывается кликом по точке монтирования tmpfs на вкладке «Статистика». Просмотр содержимого, навигация, сортировка по размеру, удаление файлов и пустых папок с подтверждением.
⚠️ Удаление работает только в пределах/tmpи/dev/shm. Папки удаляются только если пусты, файлы — без ограничений.
ls -la /tmp # просмотр содержимого
rm /tmp/файл # удаление файла
rmdir /tmp/папка # удаление пустой папки
Автоматически записываются операции из веб-интерфейса: установка/удаление/обновление пакетов, управление службами, изменение crontab, сохранение ссылок, ttyd, демон защиты, удаление файлов в tmpfs.
Формат: [дата время] [уровень] [IP] [PID] [скрипт] сообщение. Хранятся в /tmp/entware/logs/, ежедневно в 12:00 копируются в /opt/var/log/entware/ (старые удаляются через 30 дней).
tail -f /tmp/entware/logs/$(date +%Y-%m-%d).log
/opt/web_entware/logger/scripts/rotate.sh # ручная ротация
echo '{"enabled":false}' > /opt/web_entware/logger/config.json # отключить
Просмотр любых текстовых логов. По умолчанию: Lighttpd errors (/opt/var/log/lighttpd/error.log), демон защиты (/opt/temp/logs/monitor.log). Кнопка «Поиск по имени» ищет файлы в /tmp и добавляет в выпадающий список (сохраняется в браузере). Выбранный файл — последние 500 строк с фильтром.
-
Очистить старше 30 дней — из
/opt/var/log/entware/ - Ротация сейчас — перенос вчерашнего лога
- Настройки логирования — вкл/выкл записи действий (индикатор)
-
Системные события — журнал вкл/выкл логирования (
/opt/var/log/entware/system.log, работает независимо от основного)
Эта страница.
Кнопка темы в правом верхнем углу. Доступны три цветовых пресета (попап с цветными кружками):
- Фиолетовый (violet) — по умолчанию, фиолетовый акцент.
- Океан (ocean) — синий акцент.
- Изумруд (forest) — зелёный акцент.
Клик по кнопке — переключение день/ночь. Клик по кружку — смена пресета. Настройка в localStorage (entware_theme), синхронизируется между вкладками. Старые day/night мигрируют в пресет violet. Все подстраницы наследуют тему.
- Модальное окно — подробные результаты (установка/удаление пакета и т.п.), закрытие крестиком/кликом вне.
- Тост-уведомления — всплывающие, исчезают через секунды.
Единый стиль, поддержка тёмной темы.
Кнопка «Проверка системы» в сайдбаре открывает диагностику готовности роутера:
-
Базовые компоненты — наличие
opkg, запущенностьlighttpd. -
Утилиты BusyBox —
sed,awk,grep,ps. -
Пакеты Entware —
cron,jq,ip(ip-full),curl,bash,brctl(bridge-utils). Для сети нужны иip, иbrctl. - Статус разделов — сводка по группам зависимостей (ok / partial / неудовлетворительно).
-
Проверка синтаксиса скриптов — каждый
.cgi/.shчерезsh -n. - Рекомендации — команды установки недостающих пакетов.
/opt/web_entware/cgi-bin/check_deps.cgi | jq . # зависимости (JSON)
/opt/web_entware/cgi-bin/check_syntax.cgi | jq . # синтаксис
Для роутеров без интернета. Кнопка «Подготовить офлайн-пакет» — в Настройки → Резервное копирование и восстановление. Скачивает менеджер + все 15 зависимостей одним архивом entware-manager-offline.tar.gz (~30–60 сек).
tar xzf entware-manager-offline.tar.gz
cd entware-manager-offline
sh install-offline.sh # автономная установка
📌 Endpoint:
prepare_offline.cgi. Временная папка/tmp/entware-offline-*удаляется при следующем запуске, если старше 24 ч.
Для слабых роутеров тяжёлые CGI-ответы кешируются в /tmp/entware/cache/ (атомарная запись temp+rename):
-
stats.cgi — кеш
opkg list/list-installedна 60 сек: 180→98 мс (−46%). -
network_stats.cgi — кеш JSON на 5 сек: 50→38 мс (−31%). Кнопка обновления шлёт
?fresh=1. - update_check.cgi — кеш на 60 сек: 470→79 мс (−83%).
Кэш opkg инвалидируется при установке/удалении/обновлении пакета.
ls -la /tmp/entware/cache/
curl -s "http://localhost:8087/entware-cgi/network_stats.cgi?fresh=1" | jq .
-
Единый лог установки — один
install.logс ротацией по размеру (при >512КБ остаются последние 256КБ). Раньше копилось до 56 файловinstall-TIMESTAMP.log. -
Авто-очистка старых версий при установке — шаг 0: в
/opt/tmpудаляютсяentware-manager-*.tar.gz,*.ipk,deploy*старше 1 дня (с защитой текущего каталога и ручного бэкапа). -
Авто-очистка временных папок RAM —
prepare_offline.cgiчистит/tmp/entware-offline-*,backup.cgi—/tmp/entware-backup-*и/tmp/entware-restore-*старше 24 ч.
Итог: /tmp освобождено ~48–50 МБ (135→87 МБ), флеш — ~60 МБ.
Скрипт /opt/web_entware/backup.sh (v2.0) создаёт полную резервную копию в /opt/temp/backup/EntwareManager_backup_YYYYMMDD_HHMMSS/:
- Список установленных пакетов
- Конфиги
lighttpd.conf,rc.local - Весь каталог
/opt/web_entware(включаяlib/,menu/,logger/,cgi-bin/,modal.js,watchdog.sh)
В той же папке — инструкция по восстановлению. Зависимости: lighttpd, ttyd, htop, jq, coreutils.
opkg update # обновить списки пакетов
opkg list # показать все доступные пакеты
opkg list-installed # показать установленные пакеты
opkg list-upgradable # пакеты с доступными обновлениями
opkg install <пакет> # установить
opkg remove <пакет> # удалить
opkg upgrade <пакет> # обновить конкретный
opkg upgrade # обновить всё (осторожно!)
opkg info <пакет> # информация
opkg files <пакет> # файлы пакета
opkg search <файл> # найти пакет по файлу
/opt/etc/init.d/S<служба> start|stop|restart|status
ps | grep <служба>
crontab -l # просмотр задач
crontab -e # редактирование
crontab -r # удалить все задачи
cat /opt/etc/crontab # файл Entware
echo "0 5 * * * /opt/web_entware/backup.sh" >> /opt/etc/crontab
htop top ps
free -h df -h uptime
du -sh /opt/* cat /proc/meminfo
ifconfig ip addr
ls -la cd <папка> cp <src> <dst> mv <src> <dst>
rm <файл> rm -rf <папка> cat <файл>
nano <файл> vi <файл>
wget <URL> curl <URL>
ping ya.ru traceroute ya.ru
⚠️ Важно: Команды, требующие прав root, выполняются от имени root. Будьте осторожны при удалении и обновлении пакетов. Для терминала рекомендуется использовать пароль.