alias_verification.pl

#!/usr/bin/perl -w
#
# alias_verification.pl
#
# Catherine.Balleydier@grenoble-inp.fr
#
# maj : 07/03/12
#
########################################################################
#
#   vérifier les alias par rapport aux listes
# 
#
########################################################################
#
use strict;
use warnings;
use File::Copy;
#
# données à paramétrer
#
 
# repertoire ou sont les listes
my $REP="/home/sympa/list_data/xxxxxxxxxxxxxxxxx/" ;
#
#  variables
#
my $entree ;
my @ligne ;
my $ind1 ;
my $ind2 ;
#
#   ouvrir  le fichier /etc/mail/sympa_aliases
#
my $fichier_alias = "/etc/mail/sympa_aliases" ;
open (FICH, $fichier_alias) || die "probleme fichier";
my @ALIAS = <FICH> ;
close (FICH);
chomp (@ALIAS);
 
 
#  
#
#  lister le contenu du repertoire contenant les listes
#
opendir(DIR, $REP) || die "Impossible de lire $REP : $!\n";
my @liste = grep { /^[^\.]/ && -r "$REP/$_" } readdir(DIR);
close (FICH) ;
#
#  pour chaque liste vérifier le fichier sympa_aliases
#
ETIQ1 : foreach $entree (@liste)
{
  $ligne[0] = "#------------------------------ "."$entree".":" ;
  $ligne[1] = "listes.grenoble-inp.fr-"."$entree".": \"\| /home/sympa/bin/queue "."$entree"."\@listes.grenoble-inp.fr\"" ;
  $ligne[2] = "listes.grenoble-inp.fr-"."$entree"."-request: \"\| /home/sympa/bin/queue "."$entree"."-request\@listes.grenoble-inp.fr\"" ;
  $ligne[3] = "listes.grenoble-inp.fr-"."$entree"."-editor: \"\| /home/sympa/bin/queue "."$entree"."-editor\@listes.grenoble-inp.fr\"" ;
  $ligne[4] = "#listes.grenoble-inp.fr-"."$entree"."-subscribe: \"\| /home/sympa/bin/queue "."$entree"."-subscribe\@listes.grenoble-inp.fr\"" ;
  $ligne[5] = "listes.grenoble-inp.fr-"."$entree"."-unsubscribe: \"\| /home/sympa/bin/queue "."$entree"."-unsubscribe\@listes.grenoble-inp.fr\"" ;
  $ligne[6] = "listes.grenoble-inp.fr-"."$entree"."-owner: \"\| /home/sympa/bin/bouncequeue "."$entree"."\@listes.grenoble-inp.fr\"" ;
  $ligne[7] = "$entree"."-owner: \"\| /home/sympa/bin/bouncequeue "."$entree"."\@listes.grenoble-inp.fr\"" ;
  for $ind1 (0..$#ALIAS)
  {
    if ( $ALIAS[$ind1] =~ /$ligne[0]/ )
    {
       for $ind2 (1..5)
       {
         $ind1++ ;
         if ( $ALIAS[$ind1] ne "$ligne[$ind2]" )
         { 
            print "1 : problème sur $ligne[$ind2] \n" ;:wq
            print "2 : problème sur $ALIAS[$ind1] \n\n" ;
            next ETIQ1 ;
         }
       }
       $ind1++ ;
       if ( ( $ALIAS[$ind1] ne "$ligne[6]" ) && ( $ALIAS[$ind1] ne "$ligne[7]" ) )
       {
          print "3 : problème sur $ligne[6] \n" ;
          print "4 : problème sur $ligne[7] \n" ;
          print "5 : problème sur $ALIAS[$ind1] \n\n" ;
          next ETIQ1 ; 
       }
       next ETIQ1 ;     
    }
  }
   print "problème $entree n'existe pas \n" ;
}