Podemosa hacer esto usando el siguiente comando:
cat tiendaonline.com.log | awk '{print $1}' | sort -n | uniq -c | sort -n | tail -n 20 | awk '{printf $1" ";system("csf -i "$2)}'
Este pipeline realiza lo siguiente, paso a paso:
cat tiendaonline.com.log
Lee todo el contenido del fichero de log.awk '{print $1}'
Extrae el primer campo de cada línea (normalmente la dirección IP del cliente).sort -n
Ordena las IPs de forma numérica (para que las mismas queden agrupadas).uniq -c
Cuenta cuántas veces aparece cada IP consecutivamente (produciendo líneas con:<veces> <IP>
).sort -n
Vuelve a ordenar esas líneas por el número de apariciones, de menor a mayor.tail -n 20
Toma las 20 últimas líneas de esa lista, es decir, las 20 IPs que más peticiones han hecho (las de mayor recuento).awk '{ printf $1" "; system("csf -i "$2) }'
Para cada una de esas 20 líneas:- Imprime el contador (
$1
) y unos espacios. - Ejecuta
csf -i <IP>
(comando de ConfigServer Firewall) para mostrar información detallada sobre esa IP (por ejemplo, si está bloqueada, su reputación, reglas aplicadas, etc.).
- Imprime el contador (
En resumen:
Extrae las 20 direcciones IP más activas del log tiendaonline.com.log
, muestra cuántas peticiones ha hecho cada una y, acto seguido, invoca csf -i
para consultar el estado o detalles de configuración del firewall para cada IP.
Deja una respuesta