Page 6 of 6 FirstFirst ... 456
Results 76 to 79 of 79

Thread: Доступ к S.M.A.R.T HDD

  1. #76

    S.M.A.R.T.Html - скрипт для мониторинга S.M.A.R.T USB-диска

    GitHub: https://github.com/gSpotx2f/smarthtml

    В связи с приобретением RT-N56U B1 вспомнил про скрипт для мониторинга SMART-параметров диска подключенного к роутеру, который когда-то писал, кажется, ещё для старого WL500gp... Скрипт получает данные из вывода smartctl, сравнивает их с сохранёнными значениями предыдущей проверки и создаёт html-страницу (/opt/share/www/smart.html) с таблицей атрибутов, отображая в ней последние изменения параметров. Также пишет в лог при изменении критически важных атрибутов и может отсылать сообщение по e-mail (sendmail). Опционально использует rrdtool для графика температуры (вообще, скрипт позволяет создавать rrd-графики для любых SMART-атрибутов, но, ИМХО, практический смысл имеет лишь температура). Для RRD присутствуют несколько вариантов пресетов создания баз, в зависимости от интервала обновления данных. Скрипт полностью совместим с ash и awk из busybox.
    Перед началом использования, естественно, необходимо установить smartmontools и rrdtool из Entware:
    Code:
    opkg install smartmontools rrdtool
    Сам скрипт нужно положить, к примеру, в /opt/usr/bin/smarthtml.sh (после этого не забыв: chmod +x /opt/usr/bin/smarthtml.sh). Затем добавить в cron для регулярного запуска... По умолчанию база rrd создаётся с шагом в 3 часа, а следовательно:
    Code:
    10 */3 * * * /opt/usr/bin/smarthtml.sh
    При первом запуске скрипт сам создаст каталог /opt/var/smarthtml/ и необходимые файлы для работы.
    Параметры вызова:
    Code:
    /opt/usr/bin/smarthtml.sh              # запуск основной процедуры выполнения (запускается cron'ом по расписанию)
    /opt/usr/bin/smarthtml.sh resetwarn    # сброс предупреждения после изменения критического параметра
    /opt/usr/bin/smarthtml.sh resetcount   # сброс счётчиков изменений параметров
    /opt/usr/bin/smarthtml.sh makerrdgraph # только отрисовка графиков rrd без проверки SMART и без изменения данных
    /opt/usr/bin/smarthtml.sh mailtest     # отправка тестового email (в случае использования e-mail оповещений)
    P.S. Параметры sendmail выставлены под использование openssl (настраивал для прошивки Padavan'а, хотя и в других с busybox sendmail настройки должны быть вроде идентичны)...

    Про cgi-модуль smarthtml.cgi... Он позволяет обновлять данные SMART прямо с веб-страницы в любой момент, что может быть удобно для мониторинга в реальном времени. Эта процедура не затрагивает rrd (rrd обновляется cron'ом по расписанию), а поэтому может производиться в любое время когда требуется получить текущие данные. Для работы модуля необходимо в настройках веб-сервера указать выполнение .cgi файлов с помощью /bin/sh.
    На примере busybox_httpd (в прошивке Padavan'а его нет, есть в "энтузиастской") нужно добавить след. строку в конфиг:
    Code:
    *.cgi:/bin/sh
    Для lighttpd нужно установить модуль mod_cgi:
    Code:
    opkg install lighttpd-mod-cgi
    далее в конфиге модуля /opt/etc/lighttpd/conf.d/30-cgi.conf изменить строку
    Code:
    ".cgi" => "/opt/bin/perl",
    на
    Code:
    ".cgi" => "/bin/sh",
    это заставит сервер выполнять .cgi файлы программой /bin/sh...
    Сам smarthtml.cgi нужно положить в /opt/share/www/cgi-bin/ и разрешить на выполнение chmod +x /opt/share/www/cgi-bin/smarthtml.cgi. Ну и, собственно, в "главном" скрипте smarthtml.sh установить переменную USE_CGI_MODULE=1.

    Есть один нюанс с правами доступа... Доступ к дисковым устройствам (/dev/sda и пр.) доступен лишь пользователю root (admin), в случае если ваш веб-сервер запускается с правами суперюзера (что в принципе нехорошо, но для embedded-систем является обычным делом), то нет никаких проблем. Если же сервер, скажем, публичный и запускается с правами специально созданного непривелегированного юзера, то можно использовать утилиту sudo из Entware для работы cgi-сценария. В smarthtml.cgi нужно выставить USE_SUDO=1. Затем установить и настроить sudo:
    Code:
    opkg install sudo
    Далее настраиваем через visudo:
    Code:
    /opt/sbin/visudo
    откроется /opt/etc/sudoers во всеми горячо любимом vi, там необходимо добавить след. строки (предположим, что веб-сервер запускается под юзером www):
    Code:
    admin ALL=(ALL) ALL
    www ALL=(admin) NOPASSWD:/opt/bin/smartctl, /opt/usr/bin/smarthtml.sh
    вторая строка разрешит пользователю www запускать /opt/bin/smartctl и /opt/usr/bin/smarthtml.sh с правами admin без ввода пароля (это важно!), что необходимо для выполнения .cgi сценария...
    В случае успешной настройки при "клике" по ссылке "Check Now" в верхней части страницы таблица SMART должна обновиться вместе с датой последней проверки в заголовке таблицы.

    Выглядит как-то так:
    Name:  smarthtml1.png
Views: 4080
Size:  136.7 KB

    _______________

    Changelog:

    0.8.3
    1. Для совместимости с различными версиями awk (mawk и пр.) расширенные регулярные выражения заменены на базовые, из кода убрана ф-ция gensub().
    2. Исправлено несколько несущественных ошибок в awk-коде.
    3. Незначительные изменения в html и js.
    Attached Files Attached Files
    Last edited by gSpot; 06-11-2023 at 16:46.

  2. #77
    Здо́рово, спасибо. Переезжайте на хобот, всё комьюнити по падавановской прошивке — там.


    PS Я, в свою очередь, тоже перепиливаю свои старые решение под падавановскую прошивку.

  3. #78
    Quote Originally Posted by ryzhov_al View Post
    Переезжайте на хобот, всё комьюнити по падавановской прошивке — там.
    Это да, тему на хоботе изучал основательно перед покупкой RT-N56...

    P.S. Обновил версию скрипта. Добавил в архив .cgi модуль (smarthtml.cgi) для веб-сервера, он позволяет снять текущие показания SMART и обновить данные прямо с веб-страницы (добавил описание в предыдущем посте).

  4. #79
    Join Date
    Mar 2009
    Location
    Russia, Moscow
    Posts
    2,119
    Blog Entries
    33

    Lightbulb Проверка температуры HDD

    Quote Originally Posted by TrueLauncher
    Всем доброго времени суток! Роутер ASUS RT-N56U. Начал умирать мой HDD (перегрев).

    Позвонил в саппорт - посоветовали купить новый (гарантия иссякла в 2013 году еще).
    Решил побаловаться с cron и поставить чек температуры на каждые 2-3 часа:

    1. Установил smartmontools из opkg.
    Code:
    Feb  4 12:37:48 smartd[791]: Device: /dev/sda [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 89 to 90
    2. По инструкции запилил в /etc/storage/started_script.sh:
    Code:
    ### Start cron daemon
    [ -z "`pidof crond`" ] && /usr/sbin/crond
    3. Создал файл /etc/storage/cron.d/hddtemp.sh - внутри:
    Code:
    #!/usr/bin/env bash
    
    log_entry=$(/opt/bin/smartctl -A /dev/sdb | egrep Temperature_Celsius | awk '{print "HDD1 TEMP: " $10}')
    
    logger "$log_entry"
    4. Далее:
    Code:
    chmod 700 /etc/storage/cron.d/hddtemp.sh
    5. Ну и на последок crontab -e:
    Code:
    SHELL=/bin/sh
    MAILTO=root
    HOME=/
    * * * * * /etc/storage/cron.d/hddtemp.sh
    6. При вызове скрипта (/etc/storage/cron.d/hddtemp.sh) пишется в лог температура HDD:
    Code:
    Feb  5 01:55:01 admin: HDD1 TEMP: 35
    http://forum.ixbt.com/topic.cgi?id=14:62022:2949#2949

Page 6 of 6 FirstFirst ... 456

Similar Threads

  1. Несколько вопросов по Samba и USB HDD
    By falselight in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 188
    Last Post: 28-02-2012, 16:43
  2. Dbox (NFS) findet die am Router angeschlossene HDD nicht
    By nostradamoss in forum German Discussion - Deutsch (DE)
    Replies: 15
    Last Post: 07-04-2008, 19:37

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •