A falta de un SolarWinds, CiscoWorks, etc... aun quedan los VBScript!
Aqui un pequeño sistema de monitoreo de equipos de comunicaciones (o lo que sea que tenga una IP). Lo que hace es enviar ping constante a cada equipo y cuando no recibe respuesta (luego de 3 intentos) envia una alerta a los correos previamente configurados.
Asimismo, todo evento es registrado en un archivo txt para estadisticas u otros fines (historicos de caidas)
Se requiere:
- Servidor SMTP habilitado
- Trafico permitido en el puerto del SMTP
- Un servidor SYSLOG o de monitoreo (recomendado. de no contar con ello, se podria usa una pc cualquiera que nunca se apague)
Reemplazar en el codigo:
SERVIDOR_SYSLOG --> Hostname usado para coger la hora. Como mencioné antes puedes usar una pc cualquiera desde donde se correrá el script
operador1@EMPRESA.COM --> Correos de los que recibiran las alertas
monitoreolan@empresa.com --> remitente de las alertas (puede usarse un correo ficticio, esto dependiendo de la configuracion de tu srv de correo)
Código:
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\SERVIDOR_SYSLOG\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_LocalTime")
Dim anio, mes, dia, hor, min, seg, NameFile
For Each objItem in colItems
mes = objItem.Month
dia = objItem.Day
anio = objItem.Year
hor = objItem.Hour
min = objItem.Minute
seg = objItem.Second
Next
NameFile = "LANcheck_" & anio & "-" & mes & "-" & dia & ".log"
NameLog = dia & "/" & mes & "/" & anio & " " & hor & ":" & min & ":" & seg
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(NameFile, ForAppending, True)
Dim Hostname(4) 'Array de Host
Dim strTarget(4) 'Array de IPS
Dim Ubicacion(4) ' Array de Descripcio/Ubicaciones
Hostname(0) = "APONPP15"
strTarget(0) = "172.16.100.201"
Ubicacion(0) = "Acces Point Sala de reuniones piso 15"
Hostname(1) = "SWCORE2"
strTarget(1) = "172.16.100.204"
Ubicacion(1) = "Switch Core"
Hostname(2) = "SWP5G2"
strTarget(2) = "172.16.100.202"
Ubicacion(2) = "Switch Piso 5 Gabinete 2"
Hostname(3) = "APONPP22"
strTarget(3) = "172.16.100.203"
Ubicacion(3) = "Piso 22"
Set WshShell = WScript.CreateObject("WScript.Shell")
for i=0 to 3
Set WshExec = WshShell.Exec("ping -n 3 -w 2000 " & strTarget(i))
strPingResults = LCase(WshExec.StdOut.ReadAll)
If InStr(strPingResults, "reply from") Then
f.Writeline Hostname(i) & Chr(09) & strTarget(i) & Chr(09) & NameLog & Chr(09) & "RESPUESTA OK"
Else
f.Writeline Hostname(i) & Chr(09) & strTarget(i) & Chr(09) & NameLog & Chr(09) & "******* ALERTA! NO HAY RESPUESTA ****** "
Dim EmailDest(3)
EmailDest(0) = "operador1@EMPRESA.COM"
EmailDest(1) = "operador2@EMPRESA.COM"
EmailDest(2) = "operador3@EMPRESA.COM"
for j=0 to 2
Set WshExec = WshShell.Exec("bmail.exe -s SRVMAIL -p 25 -f monitoreolan@empresa.com -t " & EmailDest(j) & " -h -a " & Chr(34) & "** Monitoreo LAN: Alerta en " & Hostname(i) & " **" & Chr(34) & " -b " & Chr(34) & "Se adjunta el siguiente detalle: " & Chr(13) & Hostname(i) & Chr(09) & strTarget(i) & Chr(09) & Ubicacion(i) & Chr(09) & "******* ALERTA! NO HAY RESPUESTA ****** " & Chr(34) )
Next
End If
Next
Las alertas llegarán al buzon similar a:
Dependiendo los permisos que puedan tener en tu empresa, las alertas podrían llegar a tu móvil.
Adjunto el ZIP con lo necesario.
Se debe ejecutar el BAT, que llamará al VBS. No cerrar el BAT (por obvias razones)