list-config_modif_serveur-ldap.pl

#!/usr/bin/perl -w
#
# list-config_modif_serveur-ldap.pl
#
# Catherine.Balleydier@inpg.fr
#
# maj : 13/03/12
#
########################################################################
# 
#   modifier le serveur ldap pour les listes s'appuyant sur 
#   les groupes annuaires
#
########################################################################
#
use strict;
use warnings;
use File::Copy;
 
## variable à paramétrer
 
my $REP="/home/sympa/list_data/xxxxxxx/" ;
my $nvannuaire="xxxxx:389" ;
my $ancannuaire="xxxxx:389" ;
 
##
 
my $fichier ;
my $nvfichier ;
my @CONFIG ;
my $entree ;
my $LIGNE;
my $ligneannuaire = "host "."$ancannuaire".":";
 
#
#  date
#
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my $marque = (1900+$year)."_".($mon+1)."_"."$mday"."_"."$hour"."_"."$min" ;
 
#
#  lister le contenu du repertoire /home/sympa/list_data/listes.grenoble-inp.fr
#
opendir(DIR, $REP) || die "Impossible de lire $REP : $!\n"; 
my @liste = grep { /^[^\.]/ && -r "$REP/$_" } readdir(DIR);
closedir(DIR);
 
#
# traiter pour chaque liste le fichier config
#
foreach $entree (@liste)
{
  $fichier = "$REP"."$entree"."/config" ; 
       print "liste : $fichier\n";
  copy ("$fichier", "$fichier"."."."$marque") ;
  open (FICH,"$fichier") ||die "probleme fichier";
  @CONFIG = <FICH> ;
  close (FICH) ;
 
#
# recherche si la liste s'appuie sur les groupes annuaires
#
  if (grep(/include_ldap_2level_query/i, @CONFIG))
  {
    copy ("$fichier", "$fichier"."."."$marque") ;
    $nvfichier  = "$REP"."$entree"."/nvconfig" ;
    open (NVFICH,">$nvfichier") ||die "probleme nvfichier";
 
    foreach $LIGNE (@CONFIG)
    {
      if ( ( $LIGNE =~ /"$ligneannuaire"/i) )
      {
        print "$entree\n";
        $LIGNE = "host "."$nvannuaire" ;
      }
      chomp $LIGNE ;
      print NVFICH "$LIGNE\n" ;
    }
    close (NVFICH) ;
    rename ("$nvfichier","$fichier") ;
    chown "503" , "503", "$fichier" ;
  }
}