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?
После изучения этого глубже я могу подтвердить, что переключатель -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 «видит» ваш скрипт (ы)