Home

Manual crond Manager

Тайна го

Usuario Destacado
Loco por OpenSPA
5 Nov 2016
1.411
1.361
0
43
En este manual vamos a tratar el funcionamiento de crond Manager en imagen Openspa.

¿ En primer lugar para que sirve la utilidad crond ?

Basicamente sirve para ejecutar un comando individual o un grupo de comandos (script), de una manera periodica a una hora y dia determinados.

Lo que hemos elejido que se ejecute en un tiempo determinado se especifica (guarda), en un archivo llamado root en el directorio de nuestro receptor /etc/cron/crontabs, llamado root habitualmente por que se trataria del usuario de nuestro sistema linux enigma2.

En dicho archivo root se guardarian los comandos a ejecutar, creandose una linea por cada proceso a ejecutar, siendo el formato por cada linea:

Código:
* * * * * comando a ejecutar

Código:
##########################################################
#minuto (0-59),                                          #
#|  hora (0-23),                                         #
#|  |  día del mes (1-31),                               #
#|  |  |  mes (1-12),                                    #
#|  |  |  |  día de la semana (0-6 donde 0=Domingo)      #
#|  |  |  |  |       comandos                            #
##########################################################
* *  *  *  *

Para facilitarnos la creaccion del archivo comentado donde se define el tipo de comando a ejecutar, y no tener que realizar manualmente, en la imagen Openspa se puede usar la utilidad crond Manager que vamos a ver su uso a continuacion.


USO TEMPORIZADORES CRON OPENSPA

1. Seleccionamos menu + sistema + configuracion del receptor + Temporizadores + Temporizadores cron

cron1.jpg


2. Nos aparece la interfaz principal de cron

cron2.jpg


En primer lugar tenemos las funciones de de activacion o desactivacion del servicio cron, que se realizan con los botones:

amarillo ----> Activamos o desactivamos el servicio cron
azul ---------> Activamos o desactivamos el servicio cron tras un reinicio completo del receptor

Si deseamos tener el servicio cron totalmente desactivado quedaria como muestra la imagen:

cron4.jpg


3. Ahora vamos a ver como añadir la ejecucion de un comando, para ello pulsariamos sobre boton verde (añadir), y nos apareceria la siguiente interfaz:

cron5.jpg


Ahora tenemos distintas opciones:

  • Activar con que frecuencia, donde podemos seleccionar si diario, mensual, semanal:

cron6.jpg


cron7.jpg


  • Hora para ejecutar el script, pues simplemente en que hora deseamos que se ejecute.
  • Tipo comando personalizado, si seleccionamos esta opcion, deberemos poner en comando a ejecutar, el comando que deseeamos ejecutar:
cron9.jpg


cron10.jpg


En este ejemplo comando reboot

cron11.jpg


Tras finalizar pulsariamos boton verde guardar:

cron13.jpg


4. En caso que en vez de un comando, desearamos ejecutar un grupo de comandos (script), deberemos:

a) Introducir el script a ejecutar en el directorio /usr/script del receptor
b) En tipo de comando seleccionar predefinido, y nos apareceran los script que tengamos en dicho directorio para ser ejecutados:

crond15.jpg


  • Para borrar/eliminar un proceso que hallamos definido se usa boton rojo (borrar)
 
  • Me gusta
Reactions: rusoalicia

daviddrf

Usuario Destacado
Loco por OpenSPA
21 May 2013
564
47
0
54
Hola Тайна го. Enhorabuena por este magnífico manual. Aprovecho para plantearte la siguiente duda. Tras seguir tu manual y confirmar que funciona he copiado en la ruta \usr\script un par de archivos con atributos 755 llamandos "Reboot.sh" y "Standby.sh" junto al archivo (con atributos 755 también) "CCcam_2.3.0_cam.sh" que ya se encontraba anteriormente en dicha carpeta.
El contenido del archivo "Reboot.sh" es:
Código:
wget -O /dev/null -q http://root:micontraseña@localhost/web/powerstate?newstate=2
Por otro lado el archivo "Standby.sh" tiene de contenido lo siguiente:
Código:
wget -O /dev/null -q http://root:micontraseña@localhost/web/powerstate?newstate=0
El primero me reinicia el deco y el segundo (respectivamente) me lo pone en reposo (no reposo profundo). Esto lo he comprobado exitosamente por telnet.
El problema que tengo es que cuando intento definir dichos scripts para ser ejecutados diariamente a una hora determinada en el gestor de cron si elijo "Predefinido" en "Tipo de comando" en el apartado "Comando a ejecutar" no me aparece ninguno de los scripts que tengo en la carpeta \usr\script tal y como se puede observar en la siguiente captura:



¿He de pulsar alguna tecla en concreto del mando una vez esté sobre "Comando a ejecutar"? Lo pregunto porque he pulsado varias teclas como el botón central de "OK", los cursores izquierdo y derecho, las teclas < y > que están bajo el 7 y 9 pero sin éxito ya que no me aparece ningún script seleccionable. Sin embargo si el "Tipo de comando" es "Personalizado" puedo escribir perfectamente las letras que quiera con el teclado QWERTY virtual que me aparece para tal efecto.
El deco en el cual lo estoy intentando es un Vu+ Solo2 con Openspa 7.1.003 por cierto.
Gracias por leerme y saludos.
 

norhap

Usuario Destacado
Vip OpenSPA
5 Ene 2010
4.354
994
0
crea una carpeta en /usr/ y la llamas scripts añade una "s" y los metes ahi.
 

daviddrf

Usuario Destacado
Loco por OpenSPA
21 May 2013
564
47
0
54
crea una carpeta en /usr/ y la llamas scripts añade una "s" y los metes ahi.

Hola. Gracias por la respuesta fogo pero me temo que tampoco ha funcionado pese a introducir ese par de archivos .sh en la nueva ruta creada \usr\scripts. Sigue sin dejarme elegir entre los diversos scripts predefinidos que en teoría debiera encontrar el gestor de cron.
 

norhap

Usuario Destacado
Vip OpenSPA
5 Ene 2010
4.354
994
0
vale, si es una opción que te di por que según el manual en carpeta script sin más debe funcionar.
 

Тайна го

Usuario Destacado
Loco por OpenSPA
5 Nov 2016
1.411
1.361
0
43
Hola Тайна го. Enhorabuena por este magnífico manual. Aprovecho para plantearte la siguiente duda. Tras seguir tu manual y confirmar que funciona he copiado en la ruta \usr\script un par de archivos con atributos 755 llamandos "Reboot.sh" y "Standby.sh" junto al archivo (con atributos 755 también) "CCcam_2.3.0_cam.sh" que ya se encontraba anteriormente en dicha carpeta.
El contenido del archivo "Reboot.sh" es:
Código:
wget -O /dev/null -q http://root:micontraseña@localhost/web/powerstate?newstate=2
Por otro lado el archivo "Standby.sh" tiene de contenido lo siguiente:
Código:
wget -O /dev/null -q http://root:micontraseña@localhost/web/powerstate?newstate=0
El primero me reinicia el deco y el segundo (respectivamente) me lo pone en reposo (no reposo profundo). Esto lo he comprobado exitosamente por telnet.
El problema que tengo es que cuando intento definir dichos scripts para ser ejecutados diariamente a una hora determinada en el gestor de cron si elijo "Predefinido" en "Tipo de comando" en el apartado "Comando a ejecutar" no me aparece ninguno de los scripts que tengo en la carpeta \usr\script tal y como se puede observar en la siguiente captura:



¿He de pulsar alguna tecla en concreto del mando una vez esté sobre "Comando a ejecutar"? Lo pregunto porque he pulsado varias teclas como el botón central de "OK", los cursores izquierdo y derecho, las teclas < y > que están bajo el 7 y 9 pero sin éxito ya que no me aparece ningún script seleccionable. Sin embargo si el "Tipo de comando" es "Personalizado" puedo escribir perfectamente las letras que quiera con el teclado QWERTY virtual que me aparece para tal efecto.
El deco en el cual lo estoy intentando es un Vu+ Solo2 con Openspa 7.1.003 por cierto.
Gracias por leerme y saludos.

Es debido a que el manual esta basado en la ultima imagen openspa la 7.2.001 y en esta imagen la ruta para los script personalizados es:

/usr/script como pone en el manual.

=========================

Tu usas una version mas antigua, que viendo el crondtimer del github de openspa que es el antiguo la ruta busca es:

Código:
def __init__(self, session):
        Screen.__init__(self, session)
        if not path.exists('/etc/cron/scripts'):
            mkdir('/etc/cron/scripts', 0755)

Por lo tanto en tu version de imagen debes introducir los script en:

/etc/cron/scripts

Ademas recuerda que un archivo script, el encabezado debe ser:

Código:
#!/bin/sh
 

daviddrf

Usuario Destacado
Loco por OpenSPA
21 May 2013
564
47
0
54
Es debido a que el manual esta basado en la ultima imagen openspa la 7.2.001 y en esta imagen la ruta para los script personalizados es:

/usr/script como pone en el manual.

=========================

Tu usas una version mas antigua, que viendo el crondtimer del github de openspa que es el antiguo la ruta busca es:

Código:
def __init__(self, session):
        Screen.__init__(self, session)
        if not path.exists('/etc/cron/scripts'):
            mkdir('/etc/cron/scripts', 0755)

Por lo tanto en tu version de imagen debes introducir los script en:

/etc/cron/scripts

Ademas recuerda que un archivo script, el encabezado debe ser:

Código:
#!/bin/sh


Muchas gracias de nuevo Тайна го. Acabo de probar lo que me has indicado y ahora ya sí puedo escoger perfectamente de entre los diversos scripts predefinidos en la nueva ruta y guardarlos:



Teniendo en cuenta tu anterior apreciación sobre el encabezado de los scripts ¿crees que así estarían correctamente redactados con el fin de reiniciar el deco y por otro lado ponerlo en reposo o por el contrario habría que modificarlos y/o añadir algo más?:

Reboot.sh:
Código:
#!/bin/sh
wget -O /dev/null -q http://root:micontraseña@localhost/web/powerstate?newstate=2

Standby.sh:
Código:
#!/bin/sh
wget -O /dev/null -q http://root:micontraseña@localhost/web/powerstate?newstate=0

Gracias por leerme una vez más. Saludos.

PD: si algún día actualizase la versión de Openspa a una posterior a la que actualmente empleo ya sabría entonces cómo proceder.
 

daviddrf

Usuario Destacado
Loco por OpenSPA
21 May 2013
564
47
0
54
Con el anterior mensaje básicamente lo que se busca es poder definir con un par de scripts un reinicio automático del deco diariamente a las 05:45 por ejemplo y luego (un par de minutos después aproximadamente, sobre las 05:47) que el deco se ponga en reposo ¿Alguien sabe cómo sería el contenido/sintaxis de ese par de scripts? Gracias por leerme y saludos.
 

norhap

Usuario Destacado
Vip OpenSPA
5 Ene 2010
4.354
994
0
tienes la utilidad de temporizadores de alimentación para hacer eso que quieres, incluso también debéis tener la acción de arranque que te permite seleccionar que quieres que haga el receptor despues de iniciar, que arranque sin más o llevarlo a standby.
aun asi, si quieres usar el cron pues también puedes hacerlo desde el mismo root y usar distintos comandos para una misma acción, con estos te deberia funcionar:

Código:
45 05 * * * init 6
48 05 * * * wget > /dev/null 2>&1 http://root:contraseñ[email protected]/web/powerstate?newstate=5
 

daviddrf

Usuario Destacado
Loco por OpenSPA
21 May 2013
564
47
0
54
tienes la utilidad de temporizadores de alimentación para hacer eso que quieres, incluso también debéis tener la acción de arranque que te permite seleccionar que quieres que haga el receptor despues de iniciar, que arranque sin más o llevarlo a standby.
aun asi, si quieres usar el cron pues también puedes hacerlo desde el mismo root y usar distintos comandos para una misma acción, con estos te deberia funcionar:

Código:
45 05 * * * init 6
48 05 * * * wget > /dev/null 2>&1 http://root:contraseñ[email protected]/web/powerstate?newstate=5


Muchas gracias fogo por la información, lo que ocurre es que no sé muy bien dónde debería pegar ese código que acabas de poner...
 

norhap

Usuario Destacado
Vip OpenSPA
5 Ene 2010
4.354
994
0
/etc/cron/crontabs/root
en root, lo editas, guarda y reinicias completo.
y si no lo tienes creado pues telnet y esto:
Código:
touch /etc/cron/crontabs/root
y ya lo tendras.
 

daviddrf

Usuario Destacado
Loco por OpenSPA
21 May 2013
564
47
0
54
/etc/cron/crontabs/root
en root, lo editas, guarda y reinicias completo.
y si no lo tienes creado pues telnet y esto:
Código:
touch /etc/cron/crontabs/root
y ya lo tendras.


Gracias fogo. Lo acabo de intentar y no me ha funcionado de momento...

Código:
45 05 * * * init 6
Entiendo que este código lo que haría por ejemplo sería reiniciar el deco a las 05:45. Lo he probado y guardado como has indicado y tras reiniciar el deco no ha ocurrido nada a tal hora.
 

norhap

Usuario Destacado
Vip OpenSPA
5 Ene 2010
4.354
994
0
copia aqui este archivo "busybox-cron" que tienes dentro de /etc/init.d/

en la pantalla del temporizadores de cron ves la linea que has metido?
 
Última edición:

Тайна го

Usuario Destacado
Loco por OpenSPA
5 Nov 2016
1.411
1.361
0
43
Gracias fogo. Lo acabo de intentar y no me ha funcionado de momento...

Código:
45 05 * * * init 6
Entiendo que este código lo que haría por ejemplo sería reiniciar el deco a las 05:45. Lo he probado y guardado como has indicado y tras reiniciar el deco no ha ocurrido nada a tal hora.

El crear el archivo root dependiendo con que editor de texto es sensiblon y no te va a funcionar, te recomiendo que crees directamente el archivo con los comandos desde consola terminal, con el comando echo y te debera funcionar correctamente.

entra en /etc/cron/crontabs y borra el archivo root que tengas ahi.

Ahora entras por telnet al receptor y ejecuta el siguiente comando para añadir las lineas que te ha comentado @fogo de esta manera:

  • Tambien aconsejo poner la ubicacion donde se aloja el programa del comando, aunque debe funcionar sin ello, pero en mi caso prefiero ponerlo, por lo que al entrar por telnet ejecuta este comando (sustituyendo openspa por la contraseña que tengas en el deco en caso que la hallas cambiado:
Código:
echo -e "45 05 * * * /sbin/init 6 \n48 05 * * * /usr/bin/wget > /dev/null 2>&1 http://root:[email protected]/web/powerstate?newstate=5 \n" >> /etc/cron/crontabs/root

Prueba si quieres cambiando la hora para que veas que te funciona correctamente.
 
Última edición:

daviddrf

Usuario Destacado
Loco por OpenSPA
21 May 2013
564
47
0
54
Muchas gracias a ambos por la ayuda y soporte. Tras intentar lo último indicado por Тайна го ha funcionado perfectamente a la primera. Muchísimas gracias ya que esto es justo lo que estaba buscando, ahora va fino fino el asunto. Una vez más muchas gracias por vuestra atención. Creo que esta combinación de scripts es muy demandada además por una gran cantidad de usuarios.
Por cierto, aprovecho para indicar que he probado la última versión disponible a día de hoy de OpenSpa (la 7.2.001) en un Zgemma Star H2 y veo que en la parte de configuración del receptor, en el apartado de temporizadores hay un nuevo apartado sobre temporizadores de alimentación tal y como indicaba fogo en su mensaje #9 en este hilo. He estado probándolo y también funciona correctamente, me parece un acierto para aquellos que prefieran hacer esto desde el mando en vez de deste telnet y con una sintaxis. El reinicio me ha funcionado perfectamente mientras que la posterior activación del reposo también. Sin embargo justo antes de que se active el reposo y después del reinicio me aparece la siguiente pantalla de espera con aproximadamente 150 segundos de espera creo recordar:



Al acabar esta espera el deco se pone en reposo ¿Hay algún modo de evitar esta espera de poco más de 150 segundos para ir al reposo directamente sin tal espera? Gracias una vez más por leerme chicos. Saludos.
 

norhap

Usuario Destacado
Vip OpenSPA
5 Ene 2010
4.354
994
0
esto esta escrito asi en la programación, por ejemplo ese mensaje lo tienes por que tu tienes el receptor encendido y te avisa que el receptor esta temporizado para hacer un acción , distinto seria el comportamiento en tiempo de espera si lo tienes por ejemplo en reposo y llega el tiempo temporizado marcado, cuando lo reactivas por ejemplo desde un reposo profundo igual tiene unos tiempos marcados.
 

daviddrf

Usuario Destacado
Loco por OpenSPA
21 May 2013
564
47
0
54
esto esta escrito asi en la programación, por ejemplo ese mensaje lo tienes por que tu tienes el receptor encendido y te avisa que el receptor esta temporizado para hacer un acción , distinto seria el comportamiento en tiempo de espera si lo tienes por ejemplo en reposo y llega el tiempo temporizado marcado, cuando lo reactivas por ejemplo desde un reposo profundo igual tiene unos tiempos marcados.


¿Entiendo por lo tanto que no se podría evitar (al menos en la actual versión de firmware 7.2.001) dicho mensaje de advertencia temporizado y habría que finalmente esperar esos más de 150 segundos de rigor? Saludos.
 

norhap

Usuario Destacado
Vip OpenSPA
5 Ene 2010
4.354
994
0
pienso que lo mejor para llegar a explicarte como funciona es que tu mismo realices pruebas con todas las opciones que te ofrece dicho temporizador, lo que comentas de quitar el tiempo de ese mensaje no es posible, ya que tienes que pensar que es una condición del código, imaginate que tu tienes puesto un temporizador, ese dia por x razón pues tienes el receptor en marcha y tv y obviamente no quieres que se ejecute, pues el message box salta avisandote de esto, te da que opción de que hacer y aparte te da un margen de tiempo para que hagas lo que creas oportuno. un ejemplo de que pruebes tu como lo hace es...yo por ejemplo ejecuto a diario un reposo profundo y lo reactivo a una determinada hora, pues bien este horario que le pongo en "reactivar" me lo adalanta cinco minutos antes, osea despierta cinco minutos antes de esa hora que le digo reactivar....y asi va esto...asi que lo mejor es que lo pruebes por ti mismo.
 

daviddrf

Usuario Destacado
Loco por OpenSPA
21 May 2013
564
47
0
54
pienso que lo mejor para llegar a explicarte como funciona es que tu mismo realices pruebas con todas las opciones que te ofrece dicho temporizador, lo que comentas de quitar el tiempo de ese mensaje no es posible, ya que tienes que pensar que es una condición del código, imaginate que tu tienes puesto un temporizador, ese dia por x razón pues tienes el receptor en marcha y tv y obviamente no quieres que se ejecute, pues el message box salta avisandote de esto, te da que opción de que hacer y aparte te da un margen de tiempo para que hagas lo que creas oportuno. un ejemplo de que pruebes tu como lo hace es...yo por ejemplo ejecuto a diario un reposo profundo y lo reactivo a una determinada hora, pues bien este horario que le pongo en "reactivar" me lo adalanta cinco minutos antes, osea despierta cinco minutos antes de esa hora que le digo reactivar....y asi va esto...asi que lo mejor es que lo pruebes por ti mismo.


Me queda perfectamente claro ahora entones fogo, muchas gracias de nuevo por tu ayuda. Saludos.
 

norhap

Usuario Destacado
Vip OpenSPA
5 Ene 2010
4.354
994
0
Me queda perfectamente claro ahora entones fogo, muchas gracias de nuevo por tu ayuda. Saludos.
todo esto que te comento de intervalo de tiempo mensaje y esto, si el temporizador se ejecuta con el receptor en modo reposo, pues se ejecuta en tiempo real, osea en el tiempo que se lo tengas configurado.