Дашборд роутера на KeeneticOS: модель, CPU, память, температуры, WAN, клиенты, компоненты.
Источники — RCI (127.0.0.1:79), /proc, /sys.
Проверено на KeeneticOS 3.9 / 4.x / 5.1.2, архитектуры mips / mipsel / aarch64.
opkg update && opkg install curl jq
curl -fsSL https://raw.githubusercontent.com/pumbaX/keenetic-info/main/install.sh | sh| Команда | Что делает |
|---|---|
kss |
показать дашборд |
kss -c |
компактный вид, одна строка на раздел |
kss -f |
подробный вид (по умолчанию) |
kss update |
обновить скрипт из репозитория |
kss debug |
выгрузить сырые ответы RCI в /tmp/kn-info-debug |
kss --help |
справка |
NO_COLOR=1 kss |
вывод без ANSI-цвета (для логов и пайпов) |
KN_INFO_STYLE=compact |
сделать компактный вид видом по умолчанию |
Постоянная настройка (надёжнее, чем переменная в профиле):
echo 'KN_INFO_STYLE=compact' > /opt/etc/kn-info.confПриоритет: флаг командной строки > переменная окружения > конфиг > подробный вид.
- Температура вынесена в отдельную строку и окрашивается по порогу: до 55°C зелёный, 55–69°C жёлтый, от 70°C красный.
- Клиенты — отдельная метка, без слова «клиентов».
- Разделитель внутри строки —
·вместо|, метки в cyan. - Ядра показываются как
×2, прошивка —5.1.2 preview · 5.01.C.2.0-2 · 21 Jul 2026.
Компактный вид переработан: 7 строк, выравнивание по метке, без рамки.
Убраны Load Average, список VPN и список компонентов — в подробном виде они остались.
Аптайм в компактном виде выводится как 9 дн. 06:08:12.
Накопитель показывается без служебных префиксов; если разделов несколько,
каждый подписывается точкой монтирования.
- Компактный режим
kss -c: 9 строк вместо 25, разделы склеены через|. - Починено определение SoC.
tr-эмуляцияstringsспотыкалась о NUL-байты в библиотеке, и процессор падал в фолбэк/proc/cpuinfo, где на ARMv8 лежит бесполезноеARMv8 Processor rev 4 (v8l). Теперь три пути по очереди:strings→grep -a→tr, плюс дополнительный источник/proc/device-tree/compatibleи расширенный список путей к библиотекам.
Причины, по которым 1.x не заводился на свежих прошивках:
localhost→127.0.0.1.ndmслушает порт 79 только на IPv4-loopback.localhostуходит в резолвер и может отдать::1либо адрес от DNS роутера — curl молча возвращает пустоту, и все поля становятся пустыми..model→.deviceс цепочкой фолбэков. В KeeneticOS 4.x/5.x каноничное имя устройства лежит в.device;.modelостаётся для совместимости, но не на всех сборках. Порядок:.device→.model→.description.- CPU на aarch64.
/proc/cpuinfoна ARMv8 не содержит ниHardware, ниmodel name— старый код давалUnknown. Модель SoC берётся из/lib/libndmMwsController.so(как в KeenKit),/proc/cpuinfo— фолбэк. - Парсинг JSON. Блочный awk-парсер температур разваливался на compact-JSON:
после
WifiMaster0он брал первуюtemperatureво всём документе. Теперь основной путь —jq, а фолбэк нормализует JSON в поток токенов и работает одинаково на compact и pretty. - Архитектура определяется через
opkg print-architecture(различаетmips/mipsel), а не по строке из RCI. - RAM и uptime берутся из
show/system(.memory,.uptime) — те же цифры, что в веб-интерфейсе./procостался фолбэком. - Компоненты читаются из
.ndw.components/.ndw.featuresс фолбэком на верхний уровень (старые прошивки). - WAN IP — интерфейс с
defaultgw == true, а не первый попавшийсяaddress(раньше на роутере с несколькими интерфейсами показывался LAN-адрес). - Диагностика вместо пустого экрана: если RCI не отвечает, скрипт печатает, что именно проверить, и выходит с кодом 1.
printfвместоecho -e, нет временных файлов в/tmp, поддержка NVMe/eMMC в списке накопителей.
curl — обязательно. jq — опционально: без него скрипт работает,
но вложенные поля парсятся приближённо.