Automatización en Bash o Python: cuándo elegir cada uno
Descubre cuándo usar Bash o Python para automatizar tareas según su complejidad, rendimiento y portabilidad en sistemas Linux.
Cuando toca automatizar tareas en un sistema Linux, siempre surge la misma duda: ¿lanzo un script en Bash o me paso a Python? Ambas herramientas son potentes, pero cada una brilla en escenarios distintos. Elegir mal puede convertir una tarea de cinco minutos en un dolor de cabeza. Te cuento cómo decido yo en el día a día.
Bash: el rey de la shell y las tareas rápidas
Bash es imbatible cuando trabajas directamente con el sistema operativo. Si necesitas mover archivos, procesar logs, lanzar comandos en cadena o gestionar procesos, un script de Bash es lo más rápido y eficiente.
Ejemplo práctico: limpiar logs viejos de más de 7 días en /var/log:
#!/bin/bash
find /var/log -name "*.log" -mtime +7 -exec rm {} \;
echo "Logs antiguos eliminados."
Aquí Bash gana por claridad y velocidad de ejecución. No necesitas importar librerías ni pensar en estructuras de datos complejas. Es ideal para tareas que se resuelven con tuberías (|), redirecciones y comandos nativos del sistema.
Cuándo usarlo: automatización de backups, monitorización simple, despliegues rápidos, manipulación de archivos, cron jobs sencillos.
Python: cuando la lógica se complica
Python entra en juego cuando la tarea requiere lógica condicional compleja, manejo de datos estructurados (JSON, CSV, YAML), o interactuar con APIs y bases de datos. Su sintaxis clara y su enorme ecosistema de librerías lo hacen mucho más mantenible que un script de Bash largo.
Ejemplo práctico: procesar un JSON de configuración y enviar alertas si un servicio está caído:
import json
import requests
with open('servicios.json') as f:
servicios = json.load(f)
for servicio in servicios:
try:
r = requests.get(servicio['url'], timeout=5)
if r.status_code != 200:
print(f"Alerta: {servicio['nombre']} caído")
except:
print(f"Error: {servicio['nombre']} no responde")
Aquí Bash se volvería un infierno con jq, bucles anidados y manejo de errores limitado. Python ofrece legibilidad, depuración sencilla y reutilización.
Cuándo usarlo: web scraping, automatización de APIs, procesamiento de logs con análisis, scripts que requieren manejo de excepciones, tareas multiplataforma.
La línea que no debes cruzar
Hay un error común: intentar hacerlo todo con una sola herramienta. He visto scripts de Bash de 500 líneas con funciones imposibles de depurar, y scripts de Python para hacer un simple cp o grep. La regla es simple:
- Si tu script es básicamente una secuencia de comandos del sistema con algún
if, usa Bash. - Si necesitas estructuras de datos, bucles complejos, o librerías externas, usa Python.
- Si el script va a crecer o lo va a mantener otra persona, prioriza Python.
Ejemplo de mala práctica: usar Bash para parsear un CSV con comillas y saltos de línea internos. Mejor Python con csv o pandas.
Conclusión
No se trata de declarar un ganador, sino de conocer el terreno. Bash es tu navaja suiza para el día a día del administrador de sistemas; Python es tu caja de herramientas completa para automatización robusta. Aprende bien ambos y sabrás instintivamente cuál sacar del bolsillo según el problema. En mi estación de trabajo, los dos conviven sin problema.