我會盡我所能詳細描述,以便您瞭解我正在處理的環境以及我正在嘗試執行的操作。從本身(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