我会尽我所能详细描述,以便您了解我正在处理的环境以及我正在尝试执行的操作。从本身(Nagios/NSclient)作为管理员运行一个vbscript
我在工作中使用Nagios来监视我们的服务器。我们的每台Windows服务器都安装了NSclient ++。 Nagios调用的其中一个脚本是check_updates.vbs;这里是怎么一回事,如果有人需要知道:
在Nagios的服务器端,我们执行以下命令:
/usr/lib/nagios/plugins/check_nrpe -H WindowsServerIpAddress -p 5666 -t 120 -c check_updates
当我们执行该命令,这里是正在发生的事情在Windows服务器上:
通过使用NSCP服务时,它调用以下命令,在nsclient.ini文件中定义的(进入NSclient ++文件夹):
check_updates=cscript.exe //T:120 //NoLogo scripts\\check_updates.vbs
然后,它调用check_updates.vbs script。
Windows Server上的本地帐户是管理员帐户。我们更改了nscp服务的属性,以便使用另一个帐户调用此服务,该帐户专门用于监视。
因此,当我们直接在Windows服务器(即本地)上调用check_updates.vbs脚本时,一切顺利,脚本完美运行。但是如果我们远程调用它,在Nagios服务器上,我们有一个简单的(但是致命的)错误,说权限被拒绝。
这就是为什么我们专注于为监控用户提供足够的权限。
经过越来越多的搜索和尽我们所能,我必须说我们现在有点失落。
我想最后的解决办法是在脚本的开头添加这些行,给监控用户足够的权限来执行正确的脚本:
Set WshShell = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.length = 0 Then
Set ObjShell = CreateObject("Shell.Application")
ObjShell.ShellExecute "wscript.exe", """" & _
WScript.ScriptFullName & """" &_
" RunAsAdministrator", , "runas", 1
End if
(我发现这个here)
当我使用这个,在本地我得到一个[错误通知*],但脚本无论如何工作。但是,当我远程调用脚本时,我只是在120秒后出现超时。
更多信息:在Windows服务器上禁用UAC,并且监视用户对NSclient ++ \ scripts文件夹具有完全访问控制。通过管理员帐户使用nscp服务并非我们正在寻求解决此问题的解决方案。
那么,我在这里错过了什么吗?你有什么想法吗?
感谢您的帮助! :)
[*错误声明]:无效的参数,查看帮助与Cscript.exe将check_available_updates.vbs -h