En este sript se buscan errores en un archivo, para el ejemplo se buscan los errores en los ultimos 30 minutos del archivo log. Tomando la fecha y hora actual como final y en base a esta tomar los ultimos 30 minutos como fecha inicial.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/bash # Ruta del archivo de log archivo_log="/ruta/del/archivo.log" # Dirección de correo a la que se enviarán los errores correo_destino="correo@dominio.com" # Obtener la fecha y hora actual en el formato del log fecha_actual=$(date +"%Y-%m-%d %H:%M") # Calcular la fecha y hora hace 30 minutos en el formato del log fecha_hace_30_minutos=$(date -d '30 minutes ago' +"%Y-%m-%d %H:%M") # Buscar las líneas que contienen errores en el rango de tiempo especificado errores=$(awk -v inicio="$fecha_hace_30_minutos" -v fin="$fecha_actual" '$1 " " $2 >= inicio && $1 " " $2 <= fin && /error|timeout|server is Lost/' "$archivo_log") # Verificar si se encontraron errores if [ -n "$errores" ]; then # Enviar correo con los errores echo -e "$errores" | mail -s "Atencion" "$correo_destino" fi |