Команда exec exec для smartmontools

[D0] TL; DR; Есть ли способ протестировать команду exec конфигурации smartd так же, как можно проверить почтовую команду?

TL; DR; Мое использование - m с помощью monit для мониторинга моего Ubuntu Server 18.04. В моем smartd.conf я говорю smartmontools:

/dev/sda -a -m root -M exec /usr/share/smartmontools/smartd-runner -M test
/dev/sdb -a -m root -M exec /usr/share/smartmontools/smartd-runner

В /etc/smartmontools/run.d/ у меня есть скрипт под названием notify-monit.sh, который при вызове создает файл в /etc/monit/reports, содержащий отчет smartd. Затем в /etc/monit/scripts у меня есть еще один сценарий bash, который вызывается monit как проверка программы, которая возвращает 1, если файл существует, или 0, если он не существует. Затем monit проверяет код выхода и предупреждает, если он равен! = 0.

Этот сценарий немного сложный, поэтому я хотел бы протестировать его с A на Z. Я запускаю каждый скрипт вручную и отлично работает но все же я бы чувствовал себя более безопасным, чтобы протестировать их все в реальном сценарии, начатом smartd.

Из того, что я понимаю на странице smartd man -M test, будет только пытаться отправить тестовое письмо, и я вижу в syslog что он делает именно это. И только это. Есть ли способ проверить целую цепочку exec?

131
задан 18 July 2018 в 17:12

1 ответ

После изучения этого глубже я могу подтвердить, что переключатель -M test запускает команду exec.

Я думал, что есть проблема с этим, но на самом деле тест работал правильно. Весь механизм, когда он запускался smartd, просто не работал должным образом и не сообщал никаких ошибок. Существует проблема с run-parts, которая используется smartd-runner. После некоторого копания я подошел к этой теме, где кто-то разместил ссылку на этот отчет об ошибке для run-parts, содержащий обсуждение, почему он не поддерживает сценарии с точкой в ​​имени.

Достаточно удалить «.sh», заканчивающийся с notify-monit.sh, чтобы решить мою проблему. Затем тест сгенерировал предупреждение в monit успешно.

Советы по устранению неполадок для людей:

Вы можете временно echo что-то в /usr/share/smartmontools/smartd-runner, а затем проверить это в /var/log/syslog, чтобы убедиться, что smartd вызывает это script Вы можете запустить run-parts --list --lsbsysinit /etc/smartmontools/run.d, чтобы убедиться, что run-parts «видит» ваш скрипт (ы)
0
ответ дан 23 July 2018 в 10:04

Другие вопросы по тегам:

Похожие вопросы: