[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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épertoire '$eleve' ignoré.<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 ;
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |