Ich muss Software von Drittanbietern überwachen, die mehrere Dienste unter Windows ausführt. Ich möchte sie einfach so einrichten, dass ich eine E-Mail erhalte, wenn der Dienst neu gestartet wird, ausfällt usw.
Ist das etwas, das sich leicht per Skript erstellen lässt? Hat jemand etwas Grundlegendes für diese Aufgabe?
Antwort1
Das ist ein bisschen hässlich, aber Sie können es wahrscheinlich Ihren Bedürfnissen entsprechend ändern. Richten Sie einfach eine geplante Aufgabe ein, um das Skript von Zeit zu Zeit aufzurufen.
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