测试smartmontools的执行命令

测试smartmontools的执行命令

TL;DR;是否有任何方法exec可以以类似于测试邮件命令的方式测试 smartd 配置的命令?

详细信息: 我的用例是使用监控监控我的 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 则发出警报。

这个场景有点复杂,所以我想从头到尾进行测试。我手动运行每个脚本,它们单独运行良好,但我仍然觉得在由 smartd 启动的真实案例场景中测试它们更安全。

据我从 smartd 手册页了解,它-M test只会尝试发送一封测试电子邮件,我在 syslog 中看到它确实这样做了。而且仅此而已。有没有办法测试整个exec链?

答案1

经过深入调查后,我可以确认-M test交换机运行exec命令。

我以为这有问题,但实际上测试运行正常。整个机制在运行时并没有按预期工作,也没有报告任何错误。使用的smartd存在问题。经过一番挖掘,我找到了run-partssmartd-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“看到”您的脚本

相关内容