我正在开发一个Perl的Nagios插件(没有Nagios :: Plugin,只是普通的Perl)。我正在检查的错误条件通常来自命令输出,在插件内部调用。但是,创建错误条件会非常不方便,因此我正在寻找一种方法将测试输出提供给插件,以查看它是否正常工作。
我目前发现的最简单的方法是使用命令行选项来选择性地从文件读取输入而不是调用命令。
if($opt_f) {
open(FILE, $opt_f);
@output = <FILE>;
close FILE;
}
else {
@output = `my_command`;
}
还有其他更好的方法吗?
答案 0 :(得分:0)
或者您可以拥有一个测试版本的命令,它返回各种状态供您测试(可能通过命令行参数)。
您将mycommnd的测试版本放在某个测试目录中(/ my / nagois / tests / bin)。
然后在运行测试的命令行上操作PATH环境变量。
$ env PATH=/my/nagois/tests/bin:$PATH nagios_pugin.pl
对$ PATH的更改只会持续一个命令执行的时间。更改已本地化为生成以运行插件的子shell。
用于执行命令的反引号将使shell使用PATH来定位命令,这将是命令的测试版本,该命令位于搜索路径上现在是第一个的目录中。
如果我不清楚,请告诉我。
新方法的新答案。
答案 1 :(得分:0)
在你的插件中构建一个命令行开关,如果你在命令行上设置-t,你可以在/ path / to / test /命令中使用你的test命令,否则你运行&#39; production&#39;命令at / path / to / production / command
默认操作是生产,只测试交换机,指示测试模式存在。