Monster Blog

Comprobación de backups

Trabajo en una pequeña empresa de servicios y una de nuestras tareas es comprobar que se realizan las copias de seguridad de nuestros clientes.

nosotros trabajamos con veeam Backup y configuramos todos los veeam con envio de correo al mismo email que llega a nuestro Exchange 2013

Para realizar esta tarea realizo el siguiente script en PowerShell

En Veeam los correos llegan como :

Cliente [Success] nombre del job -> si es correco

Cliente [Failed] nombre del job -> si es incorrecto

Por ello centraremos el script en la busqueda del cliente y del estado (Success o Failed)

#————————————————————————————————————————————–

Add-PSSnapIn Microsoft.Exchange.Management.PowerShell.E2010

#añado los cmdlets de Exchange
cls
$l=-1 #contamos las vueltas que da el loop y ampliamos para mover por el array

#——————Array de Clientes @(nombre de los clientes), @(cantidad de emails que esperamos Cliente1 esperamos 38 copias. cliente2 esperamos 13 copias)
$clientes = @(«Cliente1», «cliente2», «cliente3»),@(38,13,17)

#-Ayer a las 19.30 (todos mis backups se lanzan a las 19.30 para adelante) 
$Ayer = (Get-Date (Get-Date -Format d)).AddHours(-4.5)
#–cmdlet que lista los correos de hoy y quita duplicados (-unique) que llegan al buzon de backup@XXXX.com

$mails = Get-MessageTrackingLog -resultsize unlimited -start $Ayer.ToShortDateString() | where-object {$_.Sender -eq «backup@XXXX.com»} | Select-Object MessageSubject -unique

#————————————————————
#— Listado de los de Hoy—-

#———-Foreach de clientes—————-(vamos a recorrer nuestro array de clientes y la variable cliente es la que estara operativo)

foreach ($cliente in $clientes[0])
{
$l++ #añadimos 1 al loop para mover el array de copias
» »
«***************************» + $cliente + » Backups*****************************************»

$cuenta = 0
#recorremos el listado de correos que hemos sacado con  Get-MessageTrackingLog y run es con la fila que operamos 
ForEach($run in $mails)
{

# contamos la cantidad de backups que tienen que llegar

if ( $run.MessageSubject -like ‘*’ + $cliente +’*’)
{
$cuenta = $cuenta + 1 #contamos los mails por donde pasa la condición para conocer cuantos mails han llegado 

for ($i = 0; $i -lt $clientes[1].Count ; $i++) {$a = $clientes[$i] } #nos movemos por el array de clientes

#busca faileds dentro del cliente en concreto

if ( $run.MessageSubject -like «*Failed*» )
{

$fallado= $fallado +1
«Fallado » + $run.MessageSubject #ojo

}

}#if comprueba backups
} # fin foreach de backup

«Emails Recibidos » + $cuenta +» de » + $clientes[1][$l]

#comparamos los mails que esperamos (sacamos la info del array definido como $clientes ) con los que hemos leído al pasar el Get-MessageTrackingLogif($cuenta -ne $clientes[1][$l] ) como cuenta Si no coincide o no llego el mail o sigue con el proceso.
{

» »
«8=============================================== Peligro faltan mails »
» »

}

} #foreach de clientes

 

 

#—————————————————————

Seguro que hay códigos mas elegantes, mas bonitos y mejor programados, pero esos no serian códigos míos 🙂

 

Comprobación de backups

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

16 − cinco =

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Scroll hacia arriba