1 Установка CGI модуля
gSpotx2f edited this page 2020-06-23 23:06:50 +03:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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