Script to check services, check_services.vbs
I tried developing it so the services could be passed via arguments, but
using check_nt (NC_Net) and vbscript I found it impossible when we came along
multiple arguments containing spaces, its a shame 🙁 Maybe someone out there has done it.
I know a SNMP plugin that does it and I use it, but some servers are in cluster and SNMP
checks dont work well.
Anyways here is the code ( hardcoded services are in an array)
'Script to Check Multiple Services 'Usage: check_services.cvs "service 1","service2" 'By Felipe Ferreira 12/2011 www.felipeferreira.net Version 1.0 for NAGIOS option explicit '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Const intOK = 0 Const intWarning = 1 Const intCritical = 2 Const intError = 3 Const intUnknown = 3 Dim outputmsg,outputmsgstats Dim intExit dim strScriptFile : strScriptFile = WScript.ScriptFullname Dim svc,blnFound,intTSvc Dim arrServices(13) Dim strArgs ' ######## DEBUG Dim verbose : verbose = 1 arrServices(0)="EAE_Housekeeper" arrServices(1)="EAE Identity Server" arrServices(2)="EAE InfoLight Main Server" arrServices(3)="EAE InfoLight OpData Server" arrServices(4)="EAE Net Task Server" arrServices(5)="MaFlow Archive Manager " arrServices(6)="MaFlow CS-OGL Manager" arrServices(7)="MaflowData" arrServices(8)="MaFlow PR-EAE Manager " arrServices(9)="MaFlow RO-EAE Server" arrServices(10)="MaFlow RsOgl Manager" arrServices(11)="MaFlow Task Manager" arrServices(12)="MaFlow TsOgl Manager" arrServices(13)="MSSQL$MAFSQL" '@@@@@@@@@@@HANDLES THE ARGUMENTS@@@@@@@@@@@@@@@ intTSvc = 0 for each svc in arrServices pt "SERVICO: " & svc call GetServices(svc) if (blnFound <> 1) then wscript.echo "CRITICAL - Service " & svc & " not running" wscript.quit(intCritical) else pt "OK - Service " & svc & " running" intTSvc = intTSvc + 1 end if blnFound = 0 next if (intTSvc > 0) then wscript.echo "OK - " & intTSvc & " Services running" wscript.quit(intOK) end if wscript.quit(intUnknown) Function GetServices(strComp) 'List all running services dim objService dim objWMIService : Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!localhostrootcimv2") Dim colRunningServices : Set colRunningServices = objWMIService.ExecQuery("Select * from Win32_Service where Name like '"& strComp & "' and State = 'Running'") For Each objService In colRunningServices 'pt objService.DisplayName & " running" if objService.Status = "OK" then blnFound=1 end if Next end function Function pt(strTxt) if (verbose = 1 ) then wscript.echo strTxt end if end function