Automatizar tareas con Python en Linux: deja que el sistema trabaje por ti
Tiempo de lectura: 9 minutos Categoría: Linux · Programación Nivel: Principiante / Intermedio
Una de las cosas más satisfactorias que puedes hacer como usuario de Linux es automatizar las tareas repetitivas que te roban tiempo. Renombrar cientos de archivos, hacer backups, limpiar directorios, enviar notificaciones, monitorizar servicios... todo eso se puede delegar a Python con unos pocos scripts. En este artículo te enseño los patrones más útiles.
Por qué Python para automatización en Linux
Bash es el lenguaje natural de la terminal Linux y es perfecto para tareas simples. Pero cuando la lógica se complica, cuando necesitas trabajar con APIs, procesar JSON o manejar errores de forma elegante, Python es mucho más cómodo.
Python viene preinstalado en prácticamente todas las distribuciones Linux. Tiene una sintaxis clara y legible, una biblioteca estándar enorme que cubre casi cualquier necesidad, y un ecosistema de paquetes de terceros para todo lo demás.
Trabajar con archivos y directorios
El módulo os y el módulo pathlib son los más útiles para trabajar con el sistema de archivos. Pathlib es la opción moderna y más elegante: te permite tratar las rutas como objetos con métodos propios en vez de como simples cadenas de texto.
Con pathlib puedes listar todos los archivos de un directorio filtrando por extensión, crear directorios de forma recursiva sin errores aunque ya existan, renombrar archivos en masa aplicando una transformación al nombre, o mover archivos entre directorios según sus propiedades como la fecha de modificación o el tamaño.
Un caso de uso muy común es organizar automáticamente la carpeta de descargas. Puedes escribir un script que mueva los archivos a subcarpetas según su extensión: todos los PDF a una carpeta de documentos, las imágenes a otra, los archivos de audio a otra. Con pathlib esto son menos de 20 líneas de código.
Ejecutar comandos del sistema
El módulo subprocess te permite ejecutar cualquier comando del sistema desde Python y capturar su salida para procesarla. Es más potente que os.system porque te da control total sobre la entrada, salida y errores del proceso.
Con subprocess.run puedes ejecutar un comando y capturar su salida como texto, verificar si el comando tuvo éxito comprobando el código de retorno, y manejar los errores de forma controlada.
Esto es especialmente útil cuando quieres combinar la potencia de las herramientas de línea de comandos de Linux con la lógica de Python. Por ejemplo, puedes usar subprocess para ejecutar rsync y sincronizar directorios, luego procesar la salida con Python para enviar un informe por correo o guardar un log.
Programar tareas con cron y Python
Cron es el programador de tareas de Linux. Te permite ejecutar cualquier script automáticamente a intervalos regulares: cada hora, cada día a las 3 de la madrugada, cada lunes a las 9, o cualquier combinación que necesites.
Para añadir una tarea cron edita el crontab con el comando crontab -e. El formato tiene cinco campos antes del comando: minuto, hora, día del mes, mes y día de la semana. Un asterisco en cualquier campo significa "todos los valores posibles".
Por ejemplo, para ejecutar un script de Python todos los días a las 2 de la madrugada pon 0 2 en los campos de minuto y hora seguido de tres asteriscos y la ruta completa al intérprete de Python y al script. Usar rutas absolutas en el crontab es importante porque cron no tiene las mismas variables de entorno que tu sesión de terminal.
Automatizar backups
Un script de backup es uno de los proyectos más útiles que puedes hacer. Con Python y el módulo shutil puedes copiar directorios enteros, comprimir el resultado con tarfile, añadir la fecha al nombre del archivo para tener un historial, y eliminar los backups más antiguos para no llenar el disco.
El módulo tarfile te permite crear archivos tar.gz directamente desde Python sin necesidad de llamar al comando tar del sistema. Puedes añadir archivos y directorios con un método simple, controlar el nivel de compresión y verificar la integridad del archivo resultante.
Combinado con cron tienes un sistema de backups automático completamente funcional en menos de 50 líneas de código.
Monitorizar el sistema y enviar alertas
Python tiene acceso a toda la información del sistema a través del módulo psutil, que debes instalar con pip. Con él puedes obtener el uso de CPU, memoria, disco y red en tiempo real.
Un script útil es uno que monitorice el uso del disco y te envíe un correo o una notificación cuando supere un umbral. Para enviar correos desde Python usas el módulo smtplib de la biblioteca estándar junto con email para construir el mensaje. Si prefieres notificaciones más modernas puedes usar la API de Telegram o de Slack, ambas tienen librerías de Python muy sencillas de usar.
Trabajar con APIs REST
Muchas tareas de automatización implican interactuar con servicios externos a través de sus APIs. La librería requests hace que esto sea extremadamente sencillo en Python.
Con requests puedes hacer peticiones GET y POST, añadir cabeceras de autenticación, enviar datos en formato JSON y procesar las respuestas. Esto te permite por ejemplo consultar el estado de un servicio externo, publicar automáticamente en redes sociales, o descargar datos de una API para procesarlos localmente.
Estructura recomendada para tus scripts
Para que tus scripts de automatización sean mantenibles y fáciles de depurar sigue algunas buenas prácticas. Usa logging en vez de print para registrar lo que hace el script, así puedes revisar qué pasó aunque no estuvieras mirando. Maneja las excepciones de forma específica en vez de capturar todo con un except genérico. Usa argumentos de línea de comandos con argparse para hacer los scripts configurables sin tener que editar el código.
Guarda tus scripts en un directorio como ~/scripts y añade ese directorio al PATH para poder ejecutarlos desde cualquier lugar sin escribir la ruta completa.
Conclusión
Python y Linux son una combinación perfecta para la automatización. Con los módulos que hemos visto puedes automatizar prácticamente cualquier tarea repetitiva que se te ocurra. El tiempo que inviertes en escribir un script se recupera la primera vez que lo ejecutas automáticamente.
Empieza por una tarea pequeña que hagas manualmente con frecuencia y escribe un script para automatizarla. La satisfacción de ver cómo el sistema hace el trabajo por ti es muy difícil de describir.
¿Qué tareas tienes automatizadas en tu sistema? Me interesa saber qué soluciones has encontrado.

