有没有任何方法可以测试smartd的配置的exec命令,就像测试邮件命令一样?
详细情况:我的用例是我使用莫尼特来监视我的UbuntuServer18.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页面了解到,-M test只会尝试发送一封测试邮件,我在syslog中看到它就是这样做的。只有这个。有没有办法测试整个exec链?
发布于 2018-07-22 17:11:46
在深入研究之后,我可以确认-M test开关运行的是exec命令。
我认为这是有问题的,但实际上测试是正常的。整个机制,当由smartd运行时,只是没有按预期工作,而且没有报告任何错误。run-parts存在一个问题,smartd-runner使用它。在深入研究之后,我进入了这线程,在那里有人为run-parts发布了一个指向这 bug报告的链接,其中包含了为什么它不支持带有点号的脚本的讨论。
为了解决我的问题,将".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“看到”您的脚本(S)https://askubuntu.com/questions/1057267
复制相似问题