#!/usr/bin/perl -w
# $Id: invertClasses.pl 7061 2012-04-02 09:22:45Z dbo $
# Met à jour l'arborescence des partages Classes
# en en inversant le nom et le prenom dans le cas d'un login prenom.nom
#
# - eleve : login d'un eleve, la Classe est lue dans l'annuaire
#
# Denis Bonnenfant (denis.bonnenfant@diderot.org) 7 septembre 2007 : ajoût d'un cas possible de migration
# supprime les Warnings du module Se.pm
BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
use Se;
$DOWARN = 1; # Warnings activés à nouveau
$PathClasses = '/var/se3/Classes';
die("Syntaxe : invertClasses.pl login") if ($#ARGV != 0);
($LOGIN) = @ARGV;
$lcs_ldap = Net::LDAP->new("$slapdIp");
$lcs_ldap->bind(
dn => $adminDn,
password => $adminPw,
version => '3');
# Recherche du dossier Eleve
# test de l'inversion prenom.nom
@NOM = split(/\./, $LOGIN);
if ( @NOM == 2 ) {
# on inverse
$ELEVE = @NOM[1] . "." . @NOM[0];
@REP = <$PathClasses/Classe_*/$LOGIN>;
@REPINV = <$PathClasses/Classe_*/$ELEVE>;
if ( @REP > 0 ) {
foreach $rep (@REP) {
# print "inversion : " . ( 1 + $#REP ) ." répertoires trouvés pour $LOGIN !
\n";
# print "$rep\n";
$tmpClasse = $rep;
$tmpClasse =~ s!^$PathClasses/Classe_(.+)/$LOGIN$!$1!;
$res = $lcs_ldap->search(base => "$groupsDn",
scope => 'one',
filter => "(&(cn=Classe_*)(memberUid=$LOGIN))");
warn $res->error if $res->code;
if ( ($res->entries) == 1 ) {
print "Inversion de $prenom.$nom -> $ELEVE
\n";
system("/bin/mv '$PathClasses/Classe_$tmpClasse/$LOGIN' '$PathClasses/Classe_$tmpClasse/$ELEVE'") == 0 or warn " Erreur: /bin/mv '$PathClasses/Classe_$tmpClasse/$LOGIN' '$PathClasses/Classe_$tmpClasse/$ELEVE'\n";
print "classe : $tmpClasse\n";
print "inversion de " . $PathClasses . "/Classe_" . $tmpClasse . "/" . $LOGIN . " avec " . $ELEVE . " faite
\n";
}
}
}
}
exit 0 ;