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.