TwitterLinkedInEmail
formats

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 🙂

 

Deja tu comentario

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

CyberChimps