[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/cache/se3_install/admind/ -> admind1.c (source)

   1  /*
   2  admind projet SE3
   3  Daemon d'administration Serveur SE3
   4  
   5  « wawaChief »       olivier.lecluse@crdp.ac-caen.fr
   6  ErotoKriTOS <(-_°)> jean-luc.chretien@tice.ac-caen.fr
   7  
   8  Equipe Tice académie de Caen
   9  
  10  V 0.1 maj : 17/11/2002
  11  Distribué selon les termes de la licence GPL
  12  compilation du binaire : gcc -o admind admind1.c
  13  */
  14  
  15  #define _GNU_SOURCE
  16  #include <stdio.h>
  17  #include <unistd.h>
  18  #include <fcntl.h>
  19  #include <limits.h>
  20  #include <syslog.h>
  21  #define OPEN_MAX         256   /* # open files a process may have */
  22  
  23  main() {
  24  
  25    int fd;
  26    int i;
  27  
  28    char str[12];
  29    char ligne [128];
  30  
  31    FILE *result;
  32    FILE *tbp;
  33  
  34    openlog("admind_SE3", LOG_PERROR | LOG_PID, LOG_INFO);
  35    umask (022);
  36    chdir ("/tmp");
  37  
  38    // Le daemon passe en arrière plan
  39    if (fork() !=0) exit (0);
  40    // Creation d'une session
  41    setsid();
  42  
  43    // Creation d'un fichier lock contenant le n° pid
  44    fd = open ("/var/run/admind.pid", O_RDWR | O_CREAT,0640);
  45    if (fd < 0) exit (0);
  46    if (lockf (fd, F_TLOCK, 0) < 0 ) exit(0);
  47    snprintf (str, 12, "%d\n", getpid ());
  48    write (fd, str, strlen (str));
  49  
  50    // Fermeture des descripteurs de fichiers
  51    // Plus d'affichage des  messages stdout, stderr
  52    for (i=0; i<OPEN_MAX; i++) close (i);
  53  
  54    while(1) {
  55      // DEBUG
  56      // printf ("admind in work ;-)\n");
  57      tbp = fopen("/home/remote_adm/admin.sh","r");
  58      if (tbp != NULL) {
  59        fclose(tbp);
  60        // DEBUG
  61        // printf ("presence admin.sh ;-)\n");
  62  
  63        // Analyse syntaxique du script admin.sh
  64        // A FAIRE !!
  65  
  66        // Execution de la tache d'administration
  67        result = popen ("/home/remote_adm/admin.sh","r");
  68          while (fgets(ligne, 127, result)!=NULL) {
  69            // Redirection des sorties admin.sh vers syslog
  70            syslog (LOG_INFO, ligne,"\n");
  71          }
  72        pclose(result);
  73  
  74        // Effacement du fichier admin.sh
  75        remove ("/home/remote_adm/admin.sh");
  76        // Ecriture d'un message syslog  de Fin d'execution
  77        syslog (LOG_INFO, "Fin execution admin.sh");
  78      }
  79      sleep(1);
  80    }
  81    closelog ();
  82  }


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1