제가 할 수있는 한 자세하게 설명해 드리겠습니다. 제가 작업하고있는 환경과 내가하려는 일을 이해할 수 있습니다.자체에서 관리자로 vbscript를 실행하십시오 (Nagios/NSclient)
저희 서버를 모니터링하기 위해 직장에서 Nagios를 사용하고 있습니다. 각각의 Windows 서버에는 NSclient ++가 설치되어 있습니다. Nagios가 호출하는 많은 스크립트 중 하나는 check_updates.vbs입니다. 여기에 누군가가 알 필요가 있다면 어떻게되는지 S : Nagios의에
'
/usr/lib/nagios/plugins/check_nrpe -H WindowsServerIpAddress -p 5666 -t 120 -c check_updates
우리가 그 명령을 실행하면, 여기에 윈도우 서버에 무슨 일이 일어나고 있는지입니다 서버 측을, 우리는 다음과 같은 명령을 실행 다음 NSCP 서비스를 사용하여
, 그것은 (NSclient ++ 폴더)를 nsclient.ini 파일에 정의 된 다음 명령을 호출합니다
check_updates=cscript.exe //T:120 //NoLogo scripts\\check_updates.vbs
그런 다음 check_updates.vbs script을 호출합니다.
Windows 서버의 로컬 계정은 관리자 계정입니다. 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
이
(I이
here 발견) :
는
해봤 마지막 솔루션은 모니터링 사용자에게 적절하게 스크립트를 실행하기에 충분한 권한을 부여, 스크립트의 시작 부분에 다음 줄을 추가했다
이것을 사용하면 로컬에서 [오류 통지 *]가 표시되지만 스크립트가 작동합니다. 그러나 원격으로 스크립트를 호출하면 120 초 후에 만 시간 제한이 생깁니다.
추가 정보 : UAC는 Windows 서버에서 비활성화되며 모니터링 사용자는 NSclient ++ \ scripts 폴더에 대한 모든 권한을 갖습니다. 관리자 계정에 nscp 서비스를 사용하는 것은 우리가이 문제에 대해 찾고있는 해결책이 아닙니다.
그래서 여기에 뭔가가 빠졌습니까? 이거 좀 생각해?
도움 주셔서 감사합니다. :)
[* 오류 통지] : 잘못된 인수, UAC가 꺼져 다음 따라서 RUNAS에 대해 걱정하지 않는 UAC 권한 오류가 아니라면 cscript.exe를 check_available_updates.vbs이