Simple script en bash para registrar accesos por ssh.

Hace uno días me vi en la necesidad de crear un simple script en bash para registrar accesos por ssh de forma mas visible. La idea es tomar de los archivos de logs del ssh ubicados en /var/log/auth y ordenarlos en un nuevo archivo de logs llamados logs.txt donde presente unicamente los siguientes datos: FECHA, HORA, IP, USUARIO

El resultado fue el siguiente bash, si bien es medio rebuscado, se pude simplificar con un poco de ganas.

########################################################################

#!/bin/bash
(cat /var/log/auth* | grep Accepted | awk ‘{print $1 ” ” $2 “\t” $3 “\t” $11 “\t” $9 }’) >> cachelogs.txt
grep -v -f logs.txt cachelogs.txt >> logs.txt
mv logs.txt cachelogs.txt
sort cachelogs.txt >> logs.txt
rm cachelogs.txt

########################################################################

Al ejecutarlo, como ya comente, la salida sera un un archivo de log llamado “logs.txt” como el siguiente ejemplo.
Jun 12 14:46:29 192.168.20.3 epel
Jun 14 22:44:39 192.168.20.4 root
Jun 15 02:07:14 192.168.20.3 epel
Jun 15 11:05:59 192.168.20.3 epel
Jun 15 11:21:11 192.168.20.100 carlos
Jun 15 11:56:08 192.168.20.100 juanca
Jun 15 11:56:16 192.168.20.254 root

Es importante correr el script periódicamente, tarea para la cual se recomienda cargarlo en el crontab de la siguiente manera, por ejemplo
echo “* *  * * *  root  /var/script/generalogs.sh” >> /etc/crontab

Saludos!

 

Mira también estos otros artículos

Deja un comentario

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