TL; DR; Есть ли любой способ протестировать exec
команда конфигурации smartd похожим способом, поскольку возможно протестировать почтовую команду?
В деталях: Мой вариант использования - то, что я использую monit для контроля моего Сервера Ubuntu 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
У меня есть другой сценарий удара, который вызывается monit как проверка программы, которая возвращается 1, если файл существует или 0, если это не существует. Затем monit проверяет код выхода и предупреждает, если это! = 0.
Этот сценарий немного сложен, таким образом, я хотел бы протестировать его от А до Я. Я запускаю каждый скрипт вручную, и они хорошо работают отдельно, но тем не менее я чувствовал бы себя более в безопасности протестировать их всех в реальном варианте развития событий, запущенном smartd.
Из того, что я понимаю из smartd страницы справочника -M test
только попытается послать тестовое электронное письмо, и я вижу в системном журнале, что он делает точно это. И только это. Есть ли любой способ протестировать целый 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
вызывает тот сценарийrun-parts --list --lsbsysinit /etc/smartmontools/run.d
быть уверенным это run-parts
"видит" Ваш сценарий (сценарии)