mini-watchdog en C

seguridad

A continuación os propongo el codigo de un pequeño WATCHDOG: Yo por ejemplo lo uso para tener mi aMule siempre funcionando, ya que suele cascar amenudo.

Para ejecutarlo yo por ejemplo hago:

$ ./watchdog /usr/bin/amule 

El funcionamiento es muy sencillo:

1. Tomamos los argumentos del usuario y verificamos que sean correctos.
2. Ejecutamos el programa que se paso como argumento y esperamos a que finalice su ejecución.
3. En funcion de lo que devuelve el programa sabemos si ha acabado correctamente o de manera erronea.
4. Si acabo correctamente salimos, sino volvemos al punto 2.

El código del programa es el siguiente:

#include "stdio.h"
 
int main(int argc,char *argv[]){
     int pid,ret=-1;
 
    //verificamos si los argumentos son correctos
    if (argc!=2) {
         printf("\nERROR: Numero de argumentos incorrecto");
         printf("\nLa forma de usarlo es $./watchdog NOMBRE_PROGRAMA\n");
         return -1;
    }
 
    //iniciamos el WATCHDOG y mostramos su PID por si es necesario
    printf("\nWATCHDOG COMIENZA SU ACTIVIDAD [PID=%d]",getpid());
 
    while (ret!=0){
         //ejecutamos el comando que le hemos indicado
         if((pid=fork())==0) {
             execl(argv[1],argv[1],NULL);
          }
         printf("\n%s COMIENZA A EJECUTARSE [PID=%d]",argv[1],pid);
         fflush(stdout);
 
        //esperamos a que el programa acabe su ejecución
        wait (&ret);
        printf("\n%s HA DEVUELTO %d",argv[1],ret);
 
        if (ret==0) {
             //si devuelve 0 el programa fue finalizado correctamente
             printf("\n\nSALIDA CORRECTA\n");  
       }else {
            //sino, finalizo de manera erronea
            printf("\n\nDEBE VOLVER A CARGARSE\n");
       }
 
      //sincronizamos el flujo stdout   
      fflush(stdout);
  }
} //fin main

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

mm

yo utilizo mldonkey y va de muerte, se tira meses y meses sin caerse..

greenbite's picture

Ofuscación

¿sabes si mldonkey soporta ofuscación de protocolo?, yo precisamente uso la versión inestable de amule para poder usar esa caracteristica porque tengo ono y capan mucho los p2p. Si mldonkey soporta ofuscación podria probarlo ...

Visita mi Blog de Informatica : http://www.greenbiteblog.org

magmax's picture

Amule en debian

Hola!

Amule en debian va por la versión 2.2.1-1, que ya sí que soporta ofuscación Laughing out loud
Y a mí no se me cae así como así (no como la versión que tuvimos durante años).

Miguel Ángel García
http://magmax.org

Lk2's picture

Sin mula

Yo llevo tiempo sin darle candela a la mulita, pero ¿ofuscación? Dijeron en sus foros hace tiempo expremente que pasaban de "perder" el tiempo en eso... me alegro de que hayan recapacitado.

Yo siempre he usado amule en modo daemon y la verdad que pocas veces recuerdo que se colgara...

tato's picture

Mi amule si se cierra.

Pues a mí al poco tiempo de encenderlo... plof!, se cierra. Lleva así unas dos semanas. Probaré el mldonkey a ver que tal.