El 04/07/2016 a las 8:32 AM, Alberto José García Fumero escribió:
El dom, 03-07-2016 a las 12:20 -0400, Hugo Florentino escribió:
On Fri, 01 Jul 2016 16:14:30 -0400, Alberto José García Fumero wrote:
El vie, 01-07-2016 a las 11:24 -0400, Yoandy Madrazo Gómez escribió:
Hay alguna forma de ejecutar un script el primer día laborable de
cada
mes?? Es para un sistema de salvas con backuppc.


Saludos, Yoandy

Guarda en un arreglo del script el listado de los días laborables, y
haz
que el script compruebe cada día si la fecha se corresponde... ;-)
Digo yo...
Bueno, esa sería una forma pero realmente no es necesario llenar un
arreglo con los días laborales del mes.

La solución que puse antes no cubría el caso de que el primer día del
mes no sea lunes, así que por mero ejercicio intelectual hice el
siguiente script:

#! /bin/sh

# Obtener el número del día en el mes
DIAMES=$(expr `date +%d` + 0)

# Obtener el número del día en la semana, del 1 al 7 (1 es lunes).
DIASEM=$(expr `date +%u` + 0)

# Variable para evaluación final
PRIMERDIALABORAL=0

# Evaluación para establecer el valor de la variable
if [ ${DIAMES} -eq 1 ]; then
    if [ 6 -gt ${DIASEM} ]; then
      PRIMERDIALABORAL=1
    fi
elif [ ${DIAMES} -le 3 ]; then
    if [ 2 -gt ${DIASEM} ]; then
      PRIMERDIALABORAL=1
    fi
fi

# Evaluar el valor de la variable
if [ ${PRIMERDIALABORAL} -eq 1 ]; then
    echo "Depuración: Este es el primer día laboral del mes."
    # Insertar aqui las acciones a tomar
else
    echo "Depuración: Este no es el primer día laboral del mes."
fi

exit 0


Noten que como mis sistemas no corren bash por defecto sino dash, en lo
posible prefiero evitar las comparaciones de igualdad y favorezco las
comparaciones por valores numéricos para que mis scripts sean más
portables, pero obviamente que esto es una preferencia personal.

Saludos, Hugo


My mistake!

En realidad quise decir: "guarda en un arreglo del script el listado del
primer día laborable de cada mes" (eso me pasa por estar en varias cosas
a la vez).

Quien dice arreglo puede decir una cadena: un substr o su equivalente
  podría revisar la cadena a ver si el día coincide. Las variantes
dependen solo de nuestra imaginación.

Por ejemplo, en Python, usar una estructura de diccionario.

Conociendo previamente el mes en que estoy (por ejemplo, extrayéndolo
con date), hacer algo como:

dicdias={'enero':4,'febrero':1,'marzo':1}

for labora in dicdias:
   if mes_en_que_estoy=labora:
      este_es=labora[1]
    ...
Otra variante, si se nos ocurriera hacer ese script en Python (estoy
explorándolo, y me ha gustado): existe la posibilidad de usar una
estructura similar a la de los ficheros de configuración,
específicamente

[laborables]
1=4
2=1
3=1
...

guardada en un fichero fechas.cfg, por ejemplo.

En el cuerpo del script se usaría una instrucción
cparser.read(fechas.cfg).

A continuación se recorrería el item laborables con un ciclo:

for labora in cparser.items('laborables'):
    if mes_en_que_estoy=labora:
        este_es=labora[1]
        
con lo cual ya tendría en este_es el primer día laboral del mes.

Una idea como esta abre la posibilidad de crear un script que no
solamente trate el caso señalado (primer día laborable del mes) sino
también otras fechas señaladas, como festivos, sábados laborables
intercambiados por no laborables, etc., a condición de especificar en
cparser.items qué sección debo buscar ('festivos', 'cambiados',
'aniversarios'), la que sea.

El tal script sería lanzado por cron.

"Metí pesca'o!" ;-)
Muchas gracias Fumero y Hugo, este es el camino que voy a tomar.

Saludos


______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l



--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que est� limpio.


______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a