Perl 向Nagios插件提供测试数据的标准?
我正在用Perl开发一个Nagios插件(没有Nagios::plugin,只有普通Perl)。我正在检查的错误条件通常来自插件内部调用的命令输出。然而,创建错误条件将非常不方便,因此我正在寻找一种方法,将测试输出提供给插件,以查看它是否正常工作 目前我发现的最简单的方法是使用命令行选项,可以选择从文件中读取输入,而不是调用命令Perl 向Nagios插件提供测试数据的标准?,perl,testing,nagios,Perl,Testing,Nagios,我正在用Perl开发一个Nagios插件(没有Nagios::plugin,只有普通Perl)。我正在检查的错误条件通常来自插件内部调用的命令输出。然而,创建错误条件将非常不方便,因此我正在寻找一种方法,将测试输出提供给插件,以查看它是否正常工作 目前我发现的最简单的方法是使用命令行选项,可以选择从文件中读取输入,而不是调用命令 if($opt_f) { open(FILE, $opt_f); @output = <FILE>; close FILE; } else {
if($opt_f) {
open(FILE, $opt_f);
@output = <FILE>;
close FILE;
}
else {
@output = `my_command`;
}
if($opt\u f){
打开(文件$opt_f);
@输出=;
关闭文件;
}
否则{
@输出=`my_命令`;
}
还有其他更好的方法吗?或者您可以使用命令的测试版本返回各种状态供您测试(可能通过命令行参数) 您将myCMND的测试版本放在某个测试目录(/my/nagois/tests/bin)中 然后在运行测试的命令行上操作PATH环境变量
$env PATH=/my/nagois/tests/bin:$PATH nagios_pugin.pl
对$PATH的更改只会持续一个命令执行的时间。更改被本地化到为运行插件而生成的子shell
用于执行命令的反勾号将导致shell使用路径来定位命令,这将导致命令的测试版本,该版本位于现在是搜索路径上的第一个目录中
如果我不清楚,请告诉我
新方法的新答案。在插件中构建一个命令行开关,如果在命令行上设置-t,则在/path/to/test/command处使用测试命令,否则在/path/to/production/command处运行“production”命令
默认操作是生产,仅在指示测试模式的开关存在时进行测试。我喜欢这个想法的原理。但是,[plug-in development guidelines]()规定,在未指定系统命令的完整路径的情况下,不应执行系统命令。但另一种解决方案是使用一个参数来选择性地指定可执行命令。