Опциональный CGI модуль (smarthtml.cgi) позволяет обновлять данные SMART с веб-страницы в любой момент, что может быть удобно для мониторинга в реальном времени. Эта процедура не затрагивает RRD (RRD обновляется cron'ом по расписанию), а поэтому может производиться в любое время когда требуется получить текущие данные.
Далее предполагается, что директория веб-сервера находится в /opt/share/www, а диретория CGI скриптов в /opt/share/www/cgi-bin.
CGI скрипт необходимо скачать в /opt/share/www/cgi-bin/ и разрешить выполнение:
mkdir -p /opt/share/www/cgi-bin
wget --no-check-certificate -O /opt/share/www/cgi-bin/smarthtml.cgi https://raw.githubusercontent.com/gSpotx2f/smarthtml/master/www/cgi-bin/smarthtml.cgi
chmod +x /opt/share/www/cgi-bin/smarthtml.cgi
Для работы модуля необходимо в настройках веб-сервера указать выполнение .cgi файлов с помощью /bin/sh.
Например, для busybox_httpd нужно добавить следующую строку в конфиг:
*.cgi:/bin/sh
Для lighttpd нужно установить модуль mod_cgi:
opkg install lighttpd-mod-cgi
Далее, в конфиге модуля /opt/etc/lighttpd/conf.d/30-cgi.conf изменить строку:
".cgi" => "/opt/bin/perl",
на
".cgi" => "/bin/sh",
Это заставит сервер выполнять .cgi файлы программой /bin/sh...
В конфигурационном файле /opt/etc/smarthtml.conf нужно установить переменные:
HTML_DIR="/opt/share/www"
USE_CGI_MODULE=1
Есть один нюанс с правами доступа... Доступ к дисковым устройствам (/dev/sda и пр.) имеет лишь пользователь root (admin), в случае если ваш веб-сервер запускается с правами суперюзера (что в принципе нехорошо, но для embedded систем является обычным делом), то нет никаких проблем. Если же сервер, скажем, публичный и запускается с правами специально созданного непривелегированного юзера, то можно использовать утилиту sudo из Entware для работы CGI сценария. В конфиге /opt/etc/smarthtml.conf нужно выставить CGI_USE_SUDO=1. Затем установить и настроить sudo:
opkg install sudo
Далее настраиваем через visudo:
/opt/sbin/visudo
Откроется /opt/etc/sudoers, там необходимо добавить следующие строки (предположим, что веб-сервер запускается под юзером www):
admin ALL=(ALL) ALL
www ALL=(admin) NOPASSWD:/opt/bin/smartctl, /opt/usr/bin/smarthtml
Вторая строка разрешит пользователю www запускать /opt/bin/smartctl и /opt/usr/bin/smarthtml с правами admin без ввода пароля (это важно!), что необходимо для выполнения CGI сценария...
В случае успешной настройки при "клике" по кнопке "Check now", в верхней части страницы, таблица SMART должна обновиться вместе с датой последней проверки.