0

我正在用 Perl 开发一个 Nagios 插件(没有 Nagios::Plugin,只是普通的 Perl)。我正在检查的错误情况通常来自插件内部调用的命令输出。但是,创建错误条件会非常不方便,因此我正在寻找一种将测试输出提供给插件的方法,以查看它是否正常工作。

我目前发现的最简单的方法是使用命令行选项来选择性地从文件中读取输入,而不是调用命令。

if($opt_f) {
  open(FILE, $opt_f);
  @output = <FILE>;
  close FILE;
}
else {
  @output = `my_command`;
}

还有其他更好的方法吗?

4

2 回答 2

0

或者你可以有一个命令的测试版本,它返回各种状态供你测试(也许通过命令行参数)。

您将 mycommnd 的测试版本放在某个测试目录 (/my/nagois/tests/bin) 中。

然后在运行测试的命令行上操作 PATH 环境变量。

$ env PATH=/my/nagois/tests/bin:$PATH nagios_pugin.pl

只要该命令执行,对 $PATH 的更改就会持续。更改本地化到为运行插件而生成的子shell。

用于执行命令的反引号将导致 shell 使用 PATH 来定位命令,这将是命令的测试版本,它位于现在是搜索路径上的第一个目录中。

如果我不清楚,请告诉我。


新方法的新答案。

于 2012-12-11T23:42:58.673 回答
0

在您的插件中构建一个命令行开关,如果您在命令行上设置 -t,则在 /path/to/test/command 中使用测试命令,否则在 /path/to/production 中运行“生产”命令/命令

默认操作是生产,仅在存在指示测试模式的开关时对其进行测试。

于 2012-12-12T17:11:10.697 回答