윈도우 서비스 모니터링 스크립트

윈도우 서비스 모니터링 스크립트

Windows에서 여러 서비스를 실행하는 일부 타사 소프트웨어를 모니터링해야 합니다. 서비스가 다시 시작되거나 실패하는 경우 이메일을 받도록 설정하고 싶습니다.

이것은 쉽게 스크립트로 작성할 수 있는 것입니까? 누군가 이 작업에 대한 기본적인 것을 가지고 있습니까?

답변1

이것은 약간 보기 흉하지만 필요에 맞게 수정할 수 있습니다. 스크립트를 자주 호출하도록 예약된 작업을 설정하기만 하면 됩니다.

Dim ServiceDown
Dim Message

Function sGetServiceStatus(ByVal strServiceName)
    wbemImpersonationLevelImpersonate = 3
    wbemAuthenticationLevelPktPrivacy = 6

    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIService = objLocator.ConnectServer("localhost")

    objWMIService.Security_.ImpersonationLevel = wbemImpersonationLevelImpersonate
    objWMIService.Security_.AuthenticationLevel = wbemAuthenticationLevelPktPrivacy

    Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service Where DisplayName ='"& strServiceName & "'")

    if(colListOfServices.Count=0) then
        sGetServiceStatus = ""
        Exit function
    end if

    For Each objItem in colListOfServices
        If objItem.DisplayName = strServiceName and objItem.State = "Running" Then
            sGetServiceStatus = objItem.State                       
            Exit Function
        else
            sGetServiceStatus = objItem.State
            ServiceDown = True
            Message = Message & vbcrlf & strServiceName
            Exit function
        End If
    Next

    sGetServiceStatus = ""
End Function

sGetServiceStatus("ISC BIND")
sGetServiceStatus("Apache2.2")
sGetServiceStatus("MySQL")

If ServiceDown Then     
    Set objMessage = CreateObject("CDO.Message") 
    objMessage.Subject = "Check Services" 
    objMessage.From = "[email protected]" 
    objMessage.To = "[email protected]" 
    objMessage.TextBody = "The following service(s) is/are down: " & Message
    objMessage.Send                 
End If

관련 정보