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.