AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 639991
Accepted
dlyk1988
dlyk1988
Asked: 2014-10-28 07:30:27 +0800 CST2014-10-28 07:30:27 +0800 CST 2014-10-28 07:30:27 +0800 CST

Nagios - NSClient++ 无法运行包含的外部脚本

  • 772

我在 Centos 7 机器上运行 Nagios 3.5。该设置用于通过 NRPE(check_nrpe 命令)监视某些 Windows 机器。目前我正在使用“nsclient-full.ini”文件中的预配置“别名”命令。到目前为止一切正常。

我想使用“alias_updates”命令监视主机上 Windows 更新的状态。

; alias_updates - Alias for alias_updates.
alias_updates = check_updates -warning 0 -critical 0 ShowAll=long

这是定义所有外部脚本的部分:

; A list of scripts available to run from the CheckExternalScripts module.
[/settings/external scripts/scripts]
check_updates=C:\Program Files\NSClient++\scripts\check_updates.vbs

当然,我已经检查过我提供的路径中是否存在“check_updates.vbs”。毕竟,它与 NSClient++ 捆绑在一起。

我已启用外部脚本的执行:

; Check External Scripts - A simple wrapper to run external scripts and batch files.
CheckExternalScripts = 1

其他相关的配置选项(在我看来)是:

; Section for NRPE (NRPEServer.dll) (check_nrpe) protocol options.
[/settings/NRPE/server]

; COMMAND ARGUMENT PROCESSING
allow arguments = true

; COMMAND ALLOW NASTY META CHARS
allow nasty characters = false

; PORT NUMBER - Port to use for NRPE.
port = 5666


; Section for external scripts configuration options (CheckExternalScripts).
[/settings/external scripts]

; COMMAND ARGUMENT PROCESSING
allow arguments = true

; COMMAND ALLOW NASTY META CHARS
allow nasty characters = false

; SCRIPT DIRECTORY
script path = 

; COMMAND TIMEOUT
timeout = 60

在 Nagios 服务器上,从命令提示符下,我正在尝试这个:

[root@mama365-account plugins]# ./check_nrpe -H 192.168.10.13 -c alias_updates

我得到的回应是这样的:

ExternalCommands: failed to create process (C:\Program Files\NSClient++\scripts\check_updates.vbs): it is not an exe file (check NSC.log for more info) - failed to lookup error code: 193( reson: 87)

我知道 NSClient 可以运行不可执行的插件 (*.exe),而只能运行脚本。这是一个VB脚本。此外,在 Nagios GUI 中与命令对应的框中也会显示相同的错误消息。

任何人都知道如何解决这个问题?阅读 NSClient++ 的文档只让我到目前为止......

更新 1:

我按照迈克尔·梅丁(Michael Medin)对这封信提供的说明进行操作。现在我的 'nsclient-full.ini' 看起来像这样:

; A list of wrappped scripts (ie. using the template mechanism)
[/settings/external scripts/wrapped scripts]
check_updates=scripts\check_updates.vbs

; VISUAL BASIC WRAPPING - 
vbs=cscript.exe //T:30 //NoLogo %SCRIPT% %ARGS%

问题是,现在我遇到了另一个错误,这一次与 vb 脚本的执行有关:

C:Program FilesNSClient++scriptscheck_updates.vbs(15, 1) Microsoft VBScript runtime error: Class not defined: 'NagiosPlugin' 

附带说明一下,看起来插件返回了“OK”,因为 Nagios 中的相应框是绿色的。

更新 2:

在 NSClient++ 论坛中搜索后,我发现有人遇到了同样的问题。原来我错过了一个'\':

check_updates=scripts\check_updates.vbs

应该:

check_updates=scripts\\check_updates.vbs

但我仍然无法让它工作。现在看来脚本的通信和执行正常,但是操作超时。如果我使用命令行中的“-t”选项将超时设置为 120 秒,则会收到以下错误消息:

CHECK_NRPE: Received 0 bytes from daemon.  Check the remote server logs for error messages.
nagios
  • 1 1 个回答
  • 19170 Views

1 个回答

  • Voted
  1. Best Answer
    Michael Medin
    2014-10-28T23:41:27+08:002014-10-28T23:41:27+08:00

    正如 krisFR 指出的那样,您需要在 vbs 文件前面加上 cscript.exe (和各种其他选项)。

    Windows 中的脚本不像 unix 中的脚本那样工作,因此它们本身不能“运行”(ish)。因此,所有脚本都必须以它们的运行时为前缀。

    理论上,这应该记录在这里:http ://docs.nsclient.org/howto/external_scripts.html#languages但我发现它丢失了,所以我会尽快更新它。

    check_updates=cscript.exe //T:30 //NoLogo "scripts\\check_updates.vbs"

    解决此问题的另一种方法是在 NSClient++ 中使用所谓的“包装”脚本,然后您可以定义“宏”来执行各种扩展:

    [/settings/external scripts/wrappings]
    vbs=cscript.exe //T:30 //NoLogo %SCRIPT% %ARGS%
    
    [/settings/external scripts/wrapped scripts]
    check_updates=scripts\check_updates.vbs
    

    更多细节可以在这里找到:http: //docs.nsclient.org/howto/external_scripts.html#wrapped-scripts

    • 3

相关问题

  • 使用 Nagios 监视 Novell 集群服务

  • 异地nagios?[关闭]

  • 是否有任何可用的图形工具来为主机生成 nagios 用户提供的地图坐标?

  • 我如何开始使用 Nagios?

  • 如何为 Exchange 邮件存储配置 Nagios 警报

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve