Skip to content
Di1r1 edited this page Aug 2, 2026 · 2 revisions

Справка по Entware Manager

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)

Интерактивный монитор процессов htop, запущенный через ttyd. Если внутри iframe не работают функциональные клавиши — используйте кнопку «Открыть в новой вкладке».

Горячие клавиши htop:

  • F6 — сортировка по выбранному столбцу
  • F9 — отправка сигнала процессу (kill)
  • F3 — поиск
  • F5 — древовидный режим
  • q — выход

Терминал (bash)

Полноценный доступ к командной строке роутера через веб-терминал 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

SMART мониторинг дисков

Мониторинг состояния дисков через 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-атрибуты с цветовой кодировкой важности

Атрибуты 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

CGI-эндпоинты

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'

Службы и Cron

Службы (init.d)

Список служб 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   # перезапуск

Мониторинг служб (service watchdog)

Демон отслеживает состояние служб и реагирует на их остановку. Лог: /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 — через 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)

Открывается кликом по точке монтирования 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.
  • Утилиты BusyBoxsed, awk, grep, ps.
  • Пакеты Entwarecron, 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 ч.

Кеширование тяжёлых ответов (оптимизация v1.07.4)

Для слабых роутеров тяжёлые 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 .

Очистка мусора (RAM + flash, v1.07.4)

  • Единый лог установки — один install.log с ротацией по размеру (при >512КБ остаются последние 256КБ). Раньше копилось до 56 файлов install-TIMESTAMP.log.
  • Авто-очистка старых версий при установке — шаг 0: в /opt/tmp удаляются entware-manager-*.tar.gz, *.ipk, deploy* старше 1 дня (с защитой текущего каталога и ручного бэкапа).
  • Авто-очистка временных папок RAMprepare_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 <служба>

Работа с cron

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. Будьте осторожны при удалении и обновлении пакетов. Для терминала рекомендуется использовать пароль.

Clone this wiki locally