2016-07-27 121 views
-2

我正在从Nagios运行perl脚本来检查某些文件是否在Windows机器上有特定的特征。当我从Nagios的运行该脚本,它的结果回应:Perl为ls -l命令返回错误

未知错误 - LANG = C LS的执行-l导致错误32512 -

我的代码是from this GitHub用单线168的变形例,所以我可以与窗口使用它:

use lib 'C$\Progra~1\Nagios\NRDS_Win\plugins'; 

奇怪的是该程序实际上输出从Windows机器上的命令行预期的结果。

这里是命令:

check_files.pl -D C:\日志-F Health.log -a '〜300'

下面是一个例子:

CRITICAL - Health.log是10703(大于300)秒旧 - 1个 Health.log文件中找到

我修改的定义代码LANG=C ls -l线,但现在我只想找到:

未知错误 - 无法执行ls -l命令 - 没有这样的文件或目录

回答

2

ls是unix命令,并通过在Windows中默认没有这样的命令。

如果你需要它,你可以安装它,例如从GNU CoreUtils

您还需要将第639行的shell命令从LANG=C ls -l更改为ls -l,因为在Windows中不能设置那样的环境变量。

+6

即使他们这样做了,'LANG = C ls -l'仍然是一个无效的Windows命令 – ikegami

+0

'ls'在窗口框中,我确实将LANG = C行更改为ls -l,但我仍然得到一个:UNKNOWN ERROR - 无法执行ls -l - 在nagios中没有这样的文件或目录,但是如果我从命令提示符运行相同的命令,它工作正常 – mithrix

+1

您应该检查'ls'是否在任何环境Nagios正在运行。它可能与命令行路径不同。 –