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 una respuesta

Tu dirección de correo electrónico no será publicada.