Archivo

Archivo para miércoles, 23 de noviembre de 2011

SCRIPT para monitorear espacio en las unidades de disco local

miércoles, 23 de noviembre de 2011 Comments off

Aunque es un tema que se ha tratado muchas veces y existe mucha información en internet, voy a aportar mi granito de arena al tema de monitorización «descentralizada» (por el tema de que cada vez más existen plataformas de monitorización que se encargan de estas tareas).

El Script en cuestión se separa en 2 partes, la primera, que es la parte de monitorizar el espacio en disco, mediante la ejecución cada X minutos/horas desde una tarea programada y la segunda parte, es el envío de un correo con la información de que partición es la que se está quedando sin espacio.

‘ SCRIPT CREADO POR MANUEL ROLDÁN – www.eManu.esmroldan@emanu.es
‘ Como utilizar El Script
‘ Editar las variables USUARIO, PASSWORD, SMTP y PUERTO. Para configurar vuestro servidor SMTP
‘ Al final de Script, tenéis que indicar los campos CC, CCO, BCC y FROM (CUIDADO CON LAS COMILLAS)
‘ Configurar una tarea programada con permisos adecuados para hacer funcionar el Script
strComputer = «.»
Set objWMIService = GetObject(«winmgmts:\» & strComputer & «rootcimv2»)
Set colItems = objWMIService.ExecQuery(«Select * from Win32_Volume»)
Set wshShell = WScript.CreateObject( «WScript.Shell» )
strComputerName = wshShell.ExpandEnvironmentStrings( «%COMPUTERNAME%» )
text = «»
For Each objItem In colItems
FSpace=objItem.FreeSpace
FSpace = (FSpace / 1024^3)
 if FSpace < 10 Then
msg = «1»
 texto = «La unidad: » & objItem.DriveLetter & » Con Nombre: » & ucase (objItem.Label) & » Tiene un espacio libre de: » & FormatNumber(FSpace,2) & » Gb «
text = text & vbNewLine & texto
end if
Next
msg = strComputerName & vbNewLine & text
if msg <> «» then
sendMAIL(msg)
end if
Sub sendMAIL(msg)
Set objEmail = CreateObject(«CDO.Message»)
Dim strbody
Dim Flds
Dim USUARIO = «MyUSER»
 Dim PASSWORD = «MyPASS»
 Dim SMTP = «smtp.gmail.com» ‘ Puede ser cualquier otro servidor.
 Dim PUERTO = «465» ‘ También puede ser el 25 cuando no hay autentificación      
Set iMsg = CreateObject(«CDO.Message»)
Set iConf = CreateObject(«CDO.Configuration»)
iConf.Load -1    ‘ CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item(«http://schemas.microsoft.com/cdo/configuration/smtpauthenticate«) = 1
.Item(«http://schemas.microsoft.com/cdo/configuration/smtpusessl«) = true
.Item(«http://schemas.microsoft.com/cdo/configuration/sendusername«) = USUARIO
.Item(«http://schemas.microsoft.com/cdo/configuration/sendpassword«) = PASSWORD
.Item(«http://schemas.microsoft.com/cdo/configuration/sendusing«) = 2
.Item(«http://schemas.microsoft.com/cdo/configuration/smtpserver«) = SMTP
.Item(«http://schemas.microsoft.com/cdo/configuration/smtpserverport«) = PUERTO
.Update
End With
strbody = msg
With iMsg
Set .Configuration = iConf
.To = «»
        .CC = «»
        .BCC = «»
        .From = «»»NOMBRE REMITENTE»» <CORREO_DEL_REMITENTE@Mi_DOMINIO.com
        .Subject = «El Servidor esta sin espacio»
.TextBody = strbody
.Send
End With
End Sub

En donde deberemos modificar los siguientes atributos/parámetros, para customizarlo como mejor nos convenga:

  1. Aviso de espacio –> Es el espacio espresado en Gb, por el cual vamos a lanzar la alerta, en este caso, la alerta está cuando el espacio en cualquier partición es inferior a 10Gb.
    if FSpace < 10 Then
  2. text0 –> Es el mensaje que vamos a mostrar en el cuerpo del correo electrónico, se puede variar con otra información/mensaje.
    texto = «La unidad: » & objItem.DriveLetter & » Con Nombre: » & ucase (objItem.Label) & » Tiene un espacio libre de: » & FormatNumber(FSpace,2) & » Gb «
  3. Variables –> Es la información que necesitamos para poder realizar la autentificación mediante SMTP al servidor de correo, y así poder enviar el correo.
    Dim USUARIO = «MyUSER»
    Dim PASSWORD = «MyPASS»
    Dim SMTP = «smtp.gmail.com» ‘ Puede ser cualquier otro servidor.
    Dim PUERTO = «465» ‘ También puede ser el 25 cuando no hay autentificación
  4. Envío de correo –> tendremos que indicar a quien va dirigido el mail, y desde que cuenta (CUIDADO CON LAS COMILLAS).
    .To = «»
    .CC = «»
    .BCC = «»
    .From = «»»NOMBRE REMITENTE»» <CORREO_DEL_REMITENTE@Mi_DOMINIO.com
    .Subject = «El Servidor esta sin espacio»

Por último, y una vez probado que funciona el envío correctamente, generaremos una tarea programada para que se ejecute cada cierto tiempo, según el crecimiento de espacio que tenga el servidor.

Hay que tener en cuenta, que si la terea se lanza cada hora, y el servidor se queda por debajo del humbral que hemos configurado, cada hora se lanzará y recibiremos un correo, hasta que se libere espacio del disco/partición o se deshabilite la tarea programada.

Categories: Microsoft Tags: , , , ,