Modificar activar/desactivar servicio o cron desde Perl
Publicado: 2012-11-02 10:12 @466
Muy buenas,
Estoy intentando administrar un script que se ejecuta continuamente para proporcionar failover a un sistema bajo IPCop. Este script es un bucle que se ejecuta cada n minutos, donde n es un parámetro que deseo configurar desde el cgi y que se modifique en el script a través de la lectura de un fichero de configuración. Para realizar esto necesito detener el script, que lea el nuevo parámetro y se ejecute en consecuencia.
Lo he realizado de dos formas:
1) mediante un cron de tal forma que modifico el fichero /var/spool/cron/root.orig insertando la siguiente línea:
Y luego mediante el uso de se actualizaría el cron y lo ejecutaría, pero no funciona, ya que utilizo, system(), exec, qx y ``, y nada no, realiza ninguna acción.
2) he creado un servicio con el siguiente código:
En el fichero CGI pongo lo siguiente:
Al realizar esta tarea el navegador se queda esperando, veo los procesos mediante el comando:
Y los resultados son que failover --start, pero no realiza ninguna acción, ya que no escribe nada en el fichero de log.
Ya no sé qué hacer, porque desde el CGI no me deja ejecutar comandos para poder iniciar/detener el servicio o cron, de tal forma que pueda parar el script que resulta ser un bucle infinito.
Ayuda, por favor.
Muchas gracias.
Estoy intentando administrar un script que se ejecuta continuamente para proporcionar failover a un sistema bajo IPCop. Este script es un bucle que se ejecuta cada n minutos, donde n es un parámetro que deseo configurar desde el cgi y que se modifique en el script a través de la lectura de un fichero de configuración. Para realizar esto necesito detener el script, que lea el nuevo parámetro y se ejecute en consecuencia.
Lo he realizado de dos formas:
1) mediante un cron de tal forma que modifico el fichero /var/spool/cron/root.orig insertando la siguiente línea:
Using bash Syntax Highlighting
- */n * * * * failover.sh >> logfailover
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Y luego mediante el uso de
Using bash Syntax Highlighting
- fcrontab -z
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
2) he creado un servicio con el siguiente código:
Using bash Syntax Highlighting
- # Script template para demonios
- #!/bin/sh
- start(){
- echo -n $"Starting service: "
- startup=`/scripts/failover_fase5_3.sh --start`
- RETVAL=$?
- echo
- }
- stop(){
- echo -n $"Stopping service: "
- shutdown=`/scripts/failover_fase5_3.sh --stop`
- RETVAL=$?
- echo
- }
- restart(){
- stop
- sleep 2
- start
- }
- # Dependiendo del parámetro que se le pase
- #start - stop - restart ejecuta la función correspondiente.
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- restart
- ;;
- *)
- echo $"Usar: $0 {start|stop|restart}"
- exit 1
- esac
- exit 0
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
En el fichero CGI pongo lo siguiente:
Using bash Syntax Highlighting
- my $activar = system("/scripts/failover_fase5_3.sh --start");
- print $activar;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Al realizar esta tarea el navegador se queda esperando, veo los procesos mediante el comando:
Using bash Syntax Highlighting
- ps auxw | grep failover | grep -v grep
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Y los resultados son que failover --start, pero no realiza ninguna acción, ya que no escribe nada en el fichero de log.
Ya no sé qué hacer, porque desde el CGI no me deja ejecutar comandos para poder iniciar/detener el servicio o cron, de tal forma que pueda parar el script que resulta ser un bucle infinito.
Ayuda, por favor.
Muchas gracias.