[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/usr/share/se3/scripts/ -> cleanClasses.pl (source)

   1  #!/usr/bin/perl -w
   2  
   3  #####
   4  # $Id: cleanClasses.pl 7061 2012-04-02 09:22:45Z dbo $
   5  # Nettoie l'arborescence des partages Classes
   6  # efface les vieux dossiers ( dossiers eleve/Archive et .eleve ) 
   7  # syntaxe : cleanClasses.pl ALL|Classe
   8  #     - ALL       : pour passer en revue toutes les classes 
   9  #     - NomClasse : par exemple 1-S1 pour nettoyer la Classe Classe_1-S1 
  10  #
  11  #       Denis Bonnenfant (denis.bonnenfant@diderot.org) 
  12  #       
  13  #####
  14  
  15  
  16  # supprime les Warnings du module Se.pm
  17  BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
  18  use Se;
  19  $DOWARN = 1; # Warnings activés à nouveau
  20  
  21  $PathClasses = '/var/se3/Classes';
  22  die("Syntaxe : cleanClasses.pl ALL|Classe") if ($#ARGV != 0);
  23  ($Classe) = @ARGV;
  24  if ($Classe eq 'ALL') {
  25    $FILTRE = "(cn=Classe_*)";
  26  } else {
  27    $FILTRE = "(cn=Classe_$Classe)";
  28  }
  29  
  30  $lcs_ldap = Net::LDAP->new("$slapdIp");
  31  $lcs_ldap->bind(
  32          dn       => $adminDn,
  33          password => $adminPw,
  34          version  => '3');
  35  $res = $lcs_ldap->search(base => "$groupsDn",
  36         scope    => 'one',
  37         filter   => "$FILTRE");
  38  die $res->error if $res->code;
  39  
  40  if (($res->entries)[0]) {
  41    # Au moins une classe a été trouvée
  42    foreach $objClasse ($res->entries) {
  43      $cnClasse = $objClasse->get_value('cn');
  44      $Classe = $cnClasse;
  45      $Classe =~ s/^Classe_// ;
  46      print "Nettoyage  de la classe : $Classe<br>\n";
  47      #Vérification l'existence du posixGroup Equipe_$Classe
  48      $resProfs = $lcs_ldap->search(base     => "$groupsDn",
  49             scope    => 'one',
  50             filter   => "(&(cn=Equipe_$Classe)(objectClass=posixGroup))");
  51      warn $resProfs->error if $resProfs->code;
  52      if (!($resProfs->entries)[0]) {
  53          warn "Erreur: Le posixGroup Equipe_$Classe n'existe pas!<br>\n";
  54      } else {
  55        if ( -d "$PathClasses/$cnClasse") {
  56          # premiere passe : on efface les anciens élèves
  57          system("rm -fr $PathClasses/$cnClasse/.* 2>/dev/null");
  58      # on efface les archives
  59      print("Effacement des dossiers archives de $cnClasse<br>\n");  
  60          @eleve = <$PathClasses/$cnClasse/*>;
  61            foreach $eleve (@eleve) { 
  62              if ( $eleve =~ m!^$PathClasses/$cnClasse/_! ) {
  63                print "r&#233;pertoire '$eleve' ignor&#233;.<br>\n"; 
  64              } else {
  65                # D.B. On met à jour ls eanciens eleves de la classe
  66                # test de l'inversion prenom.nom dans le cas de login prenom.nom
  67            $login = $eleve ;
  68                $login =~ s!^$PathClasses/$cnClasse/!! ;
  69            @NOM = split(/\./, $login);
  70            if ( @NOM == 2 ) {
  71                  # on inverse
  72                  $login = @NOM[1] . "." . @NOM[0];
  73                } 
  74          }    
  75              if ( -d "$eleve/Archives" ) {
  76          print("Effacement du dossier Archives de $login,<br>\n");
  77          system("rm -fr $eleve/Archives");
  78              }
  79            }
  80        }
  81      }
  82    }
  83  }
  84  exit 0 ;


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