Saltar al contenido
Portada » Mi Blog de Informática » Automatización con scripts bash en Linux

Automatización con scripts bash en Linux

Automatización con scripts bash en Linux

Introducción a los scripts bash para tareas automáticas

El shell scripting en bash es una poderosa herramienta para automatizar tareas en Linux. Los scripts pueden realizar desde tareas simples hasta automatizaciones complejas, como la gestión de archivos, backups y monitoreo de sistemas. A continuación, te mostraremos cómo comenzar a crear scripts bash para facilitar la administración del sistema.

Ejemplo básico de un script bash

Un script bash típico comienza con el shebang, que indica al sistema que el script debe ejecutarse con el intérprete de bash:

#!/bin/bash
echo "Hola, este es un script básico en bash"

Guarda este código en un archivo con extensión .sh y dale permisos de ejecución:

chmod +x mi_script.sh

Luego, ejecuta el script con:

./mi_script.sh

Uso de bucles for en bash

Los bucles for son esenciales para automatizar tareas repetitivas. Puedes recorrer una lista de elementos, ya sea desde un archivo o una variable separada por espacios.

1. Recorrer los elementos de un archivo usando for y cat

Supongamos que tienes un archivo llamado nombres.txt que contiene una lista de nombres. Puedes recorrerlo con el siguiente script:

#!/bin/bash
for nombre in $(cat nombres.txt); do
    echo "Hola, $nombre"
done

Este script leerá cada línea del archivo nombres.txt y mostrará un saludo para cada nombre.

2. Recorrer una variable separada por espacios

También puedes iterar sobre una variable con elementos separados por espacios:

#!/bin/bash
nombres="Carlos Ana Luis"
for nombre in $nombres; do
    echo "Hola, $nombre"
done

En este caso, la variable nombres contiene una lista de nombres que se procesan en el bucle for.

Ejemplos prácticos de automatización con scripts bash

1. Automatización de backups

Crear un script para realizar backups automáticos es una tarea común. El siguiente script copia los archivos de un directorio a otro, agregando la fecha al nombre del backup:

#!/bin/bash
# Directorio de origen
origen="/home/usuario/documentos"
# Directorio de destino
destino="/home/usuario/backups"
# Nombre del archivo de backup con fecha
fecha=$(date +%F)
archivo_backup="backup-$fecha.tar.gz"

# Crear el backup
tar -czf $destino/$archivo_backup $origen
echo "Backup realizado: $destino/$archivo_backup"

Este script comprimirá el contenido de /home/usuario/documentos en un archivo tar.gz dentro de /home/usuario/backups, añadiendo la fecha actual al nombre del archivo.

2. Mantenimiento de archivos

Este script elimina archivos de más de 30 días en el directorio /var/log para liberar espacio:

#!/bin/bash
# Directorio donde se hará la limpieza
directorio="/var/log"

# Eliminar archivos de más de 30 días
find $directorio -type f -mtime +30 -exec rm -f {} \;
echo "Archivos de más de 30 días eliminados en $directorio"

3. Monitoreo de logs

Un script para monitorear los logs en tiempo real y enviar una alerta si se detecta un error específico:

#!/bin/bash
# Archivo de log a monitorear
log="/var/log/syslog"
# Palabra clave a buscar
clave="error"

# Monitorear el log en tiempo real
tail -f $log | while read linea; do
    echo $linea | grep "$clave"
    if [ $? = 0 ]; then
        echo "Alerta: Se encontró un $clave en el log"
    fi
done

Este script utiliza tail para leer el archivo de log en tiempo real y detecta si aparece la palabra «error». Cuando la encuentra, muestra una alerta en la consola.

Conclusión

La automatización con scripts bash es esencial para mejorar la eficiencia en Linux, permitiendo automatizar tareas repetitivas como la gestión de archivos, backups y el monitoreo de logs. Estos ejemplos son solo un punto de partida, y puedes adaptar los scripts a tus necesidades específicas.

Deja una respuesta

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