planificador.sh

Nombre: planificador.sh
Autor: Juan José Cerezo Mata (Tigreci)
Origen: Original
Lenguaje: bash
Licencia: GPL V.3 (script GPL V.3)

Propósito:Planifica las tareas que deben ejecutarse a determinadas horas para una misma aplicación y mantener asi el archivo del cron lo mas limpio posible quitando todas las llamadas e incluyendolas en este script
Dependencias: Ninguna

Código:

#!/usr/bin/ksh
#
# Author: Juan José Cerezo Mata (Tigreci)
# License: GPL V.3
# 05/11/2007
#
# Chequeo horario de datos de procesos
#
function horaEnRango
{
        horaini=`echo $1 | sed "s/://"`
        horafin=`echo $2 | sed "s/://"`
hora_min_trat=`echo $hora_min | sed "s/://"`
        if [ ${horaini:0:1} = "0" ]
        then
horaini=${horaini:1:1}${horaini:2:1}${horaini:3:1}
if [ ${horaini:0:1} = "0" ]
then
horaini=${horaini:1:1}${horaini:2:1}
if [ ${horaini:0:1} = "0" ]
then
horaini=${horaini:1:1}
fi
fi
fi
        if [ ${horafin:0:1} = "0" ]
        then
horafin=${horafin:1:1}${horafin:2:1}${horafin:3:1}
if [ ${horafin:0:1} = "0" ]
then
horafin=${horafin:1:1}${horafin:2:1}
if [ ${horafin:0:1} = "0" ]
then
horafin=${horafin:1:1}
fi
fi
fi
        if [ ${hora_min_trat:0:1} = "0" ]
        then
hora_min_trat=${hora_min_trat:1:1}${hora_min_trat:2:1}${hora_min_trat:3:1}
if [ ${hora_min_trat:0:1} = "0" ]
then
hora_min_trat=${hora_min_trat:1:1}${hora_min_trat:2:1}
if [ ${hora_min_trat:0:1} = "0" ]
then
hora_min_trat=${hora_min_trat:1:1}
fi
fi
fi
let iniRango=$horaini
let finRango=$horafin
        let hora_min_tmp=$hora_min_trat
       # echo "hora_min=$hora_min_tmp iniRango=$iniRango finRango=$finRango"
        if [ $finRango -lt $iniRango ]
        then
            if [ $hora_min_tmp -lt $finRango ]
            then
                let hora_min_tmp=$hora_min_tmp+2400
    fi
            let finRango=$finRango+2400
fi
if [ $hora_min_tmp -ge $iniRango  ] && [ $hora_min_tmp -lt $finRango ]
then
echo 1
else
echo 0
fi
}

fecha=`date +"%Y%m%d"`
hora=`date +"%H"`
hora_min=`date +"%H:%M"`
#realizar lo mismo que en el de control correo

NOMBRE_PROCESO=`basename $0 | cut -d\. -f1`
EXTENSION=`basename $0 | cut -d\. -f2`

# Breve explicación
# los parametros por ejemplo tomando el primer case 00:00 01:00 significa que si se ejecuta
# Este script y la hora  del sistema se encuentra comprendida entre esas horas se ejecutarán
# los scripts incluidos dentro

case "1" in
  `horaEnRango "00:25" "01:00"`);;
  `horaEnRango "01:00" "02:00"`);;
  `horaEnRango "02:00" "03:00"`);;
  `horaEnRango "03:00" "04:00"`);;
  `horaEnRango "04:00" "05:00"`);;
  `horaEnRango "05:00" "06:00"`);;
  `horaEnRango "06:00" "06:30"`);;
  `horaEnRango "06:30" "07:00"`) # de 06:30 a 06:59
     echo "se ejecuta el comando preparado para este rango de horas"      ;;
  `horaEnRango "07:00" "08:00"`);;
  `horaEnRango "08:00" "09:00"`);;
  `horaEnRango "09:00" "10:00"`);;
  `horaEnRango "10:00" "11:00"`);;
  `horaEnRango "11:00" "12:00"`);;
  `horaEnRango "12:00" "13:00"`);;
  `horaEnRango "13:00" "14:00"`);;
  `horaEnRango "14:00" "15:00"`);;
  `horaEnRango "15:00" "16:00"`);;
  `horaEnRango "16:00" "17:00"`);;
  `horaEnRango "17:00" "18:00"`);;
  `horaEnRango "18:00" "19:00"`);;
  `horaEnRango "19:00" "20:00"`);;
  `horaEnRango "20:00" "21:00"`);;
  `horaEnRango "21:00" "22:00"`);;
  `horaEnRango "22:00" "23:00"`);;
  `horaEnRango "23:00" "00:00"`);;
esac

exit 0


Ejemplos de uso:

añadir al cron el script y añadir dentro de los cases correspondientes los scripts que querais que se ejecuten a esas horas.

Comentarios:
Este script sirve mas que nada para reorganizar scripts ya que en un momento dado un servidor abarca mas de 1 y mas de 3 aplicaciones las cuales llevan asociados unos scripts programados de mantenimiento que se ejecutan a unas determinadas horas y se necesita que estén organizados de alguna manera para saber en todo momento los scripts de mantenimiento de una aplicación en especifico o simplemente parar un conjunto de procesos para una determinada aplicación en lugar de ir script por script quitandolos del cron, se elimina el planificador de dicha aplicación

Espero que disfruteis con el script, un saludo.