скрипт мониторинга для оконных служб

скрипт мониторинга для оконных служб

Мне нужно контролировать стороннее программное обеспечение, которое запускает несколько служб в 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

Связанный контент