Tabla de Contenidos

Salvar Log Servidores Linux en una carpeta compartida

Introducción

Muchos trabajamos para Empresas y cuando llega lo OSRI lo primero que solicita son las trazas de los servidores de un año, a continuación muestro un strip que realice para aliviar ese trabajo y en caso de tener algún problema con el disco duro de mi servidor no perder esa información, además incluí que pasado un año el stript solo me borre el fichero atrasado para no ocupar espacio en mi PC. Sin más les dejo el script.

Preparativos

Debemos tener en cuenta instalar smbclient y tener una carpeta compartida en la red para salvar la información

Instalación

apt-get install smbclient

Configuración

Creamos un fichero llamado salvas_log.sh dentro de la carpeta /home con el siguiente contenido:

salvas_log.sh
#!/bin/bash
 
#creando todas las variables que voy a utilizar
dia=$(date +%d)
mes=$(date +%m)
anno=$(date +%Y)
anno_anterior=$[$anno-1]
 
# Este es un detalle para guardar el nombre de las PC en MAYUSCULAS
host_lowercase=$(hostname)
host_uppercase=$(tr '[a-z]' '[A-Z]' <<< $host_lowercase)
 
#fichero del año anterior
fecha='log_'$host_uppercase'_'$anno_anterior'-'$mes'-'$dia'.tar.bz2'
 
#fichero a guardar
nombre='log_'$host_uppercase'_'$(date +%F).tar.bz2
 
#Usuario y contraseña por la que estableces la conexion formato usuario%contraseña
conexion='user%pass'
 
#Recurso compartido formato //maquina/recurso
recurso='//nombre_pc/Salvas_'$(hostname)
 
#Nos movemos a la carpeta de los Logs
cd /var/log/
 
# creo los archivos con el formato 'syslog.log' y 'message.log' para poderlo guardar,
# es que estos 2 ficheros los crea la maquina sin el .log
cp -a syslog /var/log/syslog.log
cp -a messages /var/log/messages.log
 
#me muevo a la carpeta donde voy a guardar el fichero de las trasas
cd /home/salvas/
 
#encontrar todos los ficheros con extensión '.log' y hacer un archivo bzip.
find /var/log -name '*.log' |tar cv --files-from=- | bzip2 >  $nombre
 
#conectamos a la carpeta de las salvas
#borramos el fichero del año anterior de existir
smbclient $recurso -U $conexion -c 'del '$fecha
 
# copio la salva del dia para la maquina
smbclient $recurso -U $conexion -c 'put '$nombre
 
#borramos la salva del servidor para no ocupar espacio
rm $nombre
 
#me muevo a la carpeta /var/log/
cd /var/log/
 
# borro los ficheros 'syslog.log' y 'messages.log' creado para no tenerlo repetido
rm -f syslog.log
rm -f messages.log
 
exit 0

acto seguido le damos permisos de ejecución para hacerlo una tarea programada dentro del cron.

chmod 777 salvas.log

Comprobación

Para comprobar si todo esta como queremos basta con ejecutar el script y en la carpeta compartida tendremos un fichero guardado con el nombre de la maquina y la fecha de la salva, por ejemplo si la maquina se llama jabber tendrán algo como:

log_JABBER_2015-05-26.tar.bz2

Notas

Solo nos quedaría agregar en el cronttab la siguiente linea para que todos los dias a las 11:58 pm nos haga la salva.

58   23   *   *   *   /home/salvas_log.sh