Construir un programador de tareas con Bash

LinuxBeginner
Practicar Ahora

Introducción

Este proyecto te guiará a través de la creación de un programador de tareas utilizando un script de Bash. El programador de tareas te permite programar y administrar tareas para que se ejecuten en intervalos especificados, como por hora, diariamente o semanalmente. El script proporciona opciones para listar las tareas programadas, agregar nuevas tareas y eliminar tareas existentes.

👀 Vista previa

Vista previa del script del programador de tareas

Para comenzar, necesitarás crear un archivo llamado task_scheduler.sh y escribir el código proporcionado en él. Pasemos al primer paso.

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo crear los archivos del proyecto
  • Cómo agregar código para mostrar las tareas programadas
  • Cómo agregar código para agregar una nueva tarea
  • Cómo agregar código para eliminar una tarea
  • Cómo configurar el bucle del menú principal
  • Cómo hacer que el script sea ejecutable
  • Cómo ejecutar el proyecto

🏆 Logros

Después de completar este proyecto, podrás:

  • Crear un script de Bash
  • Utilizar crontab para programar tareas
  • Solicitar la entrada del usuario en un script de Bash
  • Agregar y eliminar tareas de crontab
  • Crear un bucle de menú en un script de Bash
  • Hacer que un script de Bash sea ejecutable y ejecutarlo

Crea los archivos del proyecto

Crea un nuevo archivo llamado task_scheduler.sh utilizando el editor de texto que desees. Puedes utilizar el siguiente comando para crear el archivo:

cd ~/project
touch task_scheduler.sh

Ahora abre el archivo en tu editor de texto.

Agrega código para mostrar tareas programadas

Instala crontab si aún no está instalado en tu sistema. Para instalar crontab, ejecuta el siguiente comando en la terminal:

sudo apt-get update
sudo apt-get install cron

Dentro del archivo task_scheduler.sh, agrega el siguiente código:

#!/bin/bash

## Función para mostrar las tareas programadas
list_tasks() {
  echo "Tareas programadas:"
  crontab -l
  echo
}

Este código define una función llamada list_tasks, que muestra las tareas programadas utilizando el comando crontab -l.

Agrega código para agregar una nueva tarea

Debajo del código agregado anteriormente, agrega el siguiente código:

## Función para agregar una nueva tarea
add_task() {
  read -p "Ingrese el comando o script que se ejecutará: " command
  read -p "Ingrese la programación (hora, diario, semanal): " schedule
  read -p "Ingrese cualquier parámetro adicional: " parameters

  case $schedule in
    hourly)
      cron_schedule="0 * * * *"
      ;;
    daily)
      cron_schedule="0 0 * * *"
      ;;
    weekly)
      cron_schedule="0 0 * * 0"
      ;;
    *)
      echo "Programación no válida. Por favor, elija hora, diario o semanal."
      return
      ;;
  esac

  ## Agrega la tarea a la crontab
  (
    crontab -l 2> /dev/null
    echo "$cron_schedule $command $parameters"
  ) | crontab -

  echo "Tarea programada correctamente."
  echo
}

Este código define una función llamada add_task, que le pide al usuario que ingrese el comando o script que se ejecutará, la programación (hora, diario o semanal) y cualquier parámetro adicional. Luego establece la programación cron adecuada según la programación elegida. Finalmente, agrega la tarea a la crontab utilizando el comando crontab -l.

Agrega código para eliminar una tarea

Debajo del código agregado anteriormente, agrega el siguiente código:

## Función para eliminar una tarea
remove_task() {
  read -p "Ingrese el comando o script que se eliminará: " command

  ## Elimina la tarea de la crontab
  crontab -l | grep -v "$command" | crontab -

  echo "Tarea eliminada correctamente."
  echo
}

Este código define una función llamada remove_task, que le pide al usuario que ingrese el comando o script que se eliminará. Luego elimina la tarea de la crontab utilizando el comando crontab -l.

Agrega código para el bucle del menú principal

Debajo del código agregado anteriormente, agrega el siguiente código:

## Bucle del menú principal
while true; do
  echo "Programador de Tareas"
  echo "1. Listar tareas programadas"
  echo "2. Agregar una tarea"
  echo "3. Eliminar una tarea"
  echo "4. Salir"
  read -p "Ingrese su elección: " choice
  echo

  case $choice in
    1)
      list_tasks
      ;;
    2)
      add_task
      ;;
    3)
      remove_task
      ;;
    4)
      break
      ;;
    *)
      echo "Elección no válida. Intente de nuevo."
      echo
      ;;
  esac
done

Este código configura un bucle de menú principal que muestra repetidamente un menú y solicita al usuario que ingrese su elección. Según la opción elegida, llama a la función correspondiente (list_tasks, add_task o remove_task) o sale del bucle.

Guarda y cierra el archivo

Guarda los cambios en el archivo task_scheduler.sh y cierra el editor de texto.

Para hacer que el script sea ejecutable, ejecuta el siguiente comando en la terminal:

chmod +x task_scheduler.sh

Este comando establece los permisos de ejecución para el archivo task_scheduler.sh.

Ejecuta el proyecto

Para ejecutar el programador de tareas, ejecuta el siguiente comando en la terminal:

./task_scheduler.sh

Este comando ejecuta el script task_scheduler.sh y inicia el programador de tareas. Sigue las instrucciones en pantalla para listar las tareas programadas, agregar nuevas tareas o eliminar tareas existentes.

Salida de la terminal del programador de tareas

Resumen

¡Felicidades! Has completado con éxito el proyecto del programador de tareas. Has creado un script de Bash que te permite programar y administrar tareas. El script ofrece opciones para listar tareas programadas, agregar nuevas tareas y eliminar tareas existentes. Siéntase libre de personalizar el script aún más para adaptarlo a tus necesidades específicas. ¡Que disfrutes programando!

✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar