Skip to content

Установка CGI модуля

gSpotx2f edited this page Jun 23, 2020 · 1 revision

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

Clone this wiki locally