Accéder au contenu.
Menu Sympa

fr - Re: [sympa-fr] Re: Re: Re: creation liste

Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa

Archives de la liste

Chronologique Discussions  
  • From: adresse@cachée
  • To: adresse@cachée
  • Cc: adresse@cachée, <adresse@cachée>
  • Subject: Re: [sympa-fr] Re: Re: Re: creation liste
  • Date: Fri, 6 Dec 2002 16:13:10 +0100 (CET)

Bonjour,

J'ai écrit un petit script qui met a plat les paragraphes du fichier
config d'une liste et qui fait un dump "searchable" de l'ensemble des
configs de liste.

Voici un extrait du dump:

test^1^subject Sample provided for an intranet list
test^2^visibility conceal
test^3^send private
test^4^archive
test^4^archive^period week
test^4^archive^access private
test^5^reply_to list
test^6^subscribe open
test^7^unsubscribe open,notify
test^8^review owner
test^9^owner
test^9^owner^email adresse@cachée
test^10^owner
test^10^owner^email adresse@cachée
test^11^host int-evry.fr

Syntaxe:

clef valeur

où clef est la concatenation par '^' des champs
-nom de la liste
-numero du paragraphe
-nom du paragraphe
-nom du sous-paragraphe (si il existe)


Un:

grep "owner\^email" result | cut -d" " -f 2-

sur le dump (fichier result) répond a la question posée ci-dessous. Et on
peut s'en poser un tas d'autres...



Gilles

====================================================================
Le script:

Un filtre awk

$ cat f_config
BEGIN { FS=" "; CP=0 ; STA=1 }
$1 == "" && $0 == $1 { CP += 1; STA=1 }
$1 != "" && $2 == "" && STA ==1 { UN = CP"^"$1;print LIST"^"UN; STA=0 }
$1 != "" && $2 != "" && STA ==1 { print LIST"^"CP"^"$0 ; STA=2}
$1 != "" && $2 != "" && STA ==0 { print LIST"^"UN"^"$0 ; STA=0}

Un shellscript

$ cat get_all.sh
#/bin/ksh
rm -f result
for i in `ls ~sympa/expl`
do
if [ -f ~sympa/expl/$i/config ] ; then
grep -v "^#" ~sympa/expl/$i/config | sed 's/^ *//' | awk
-f f_config -v LIST=$i>> result
echo $i
fi
done

=========================================================================

Un script pour regenerer le fichier config d'une liste :

Le filtre awk:

$ cat f_rebuild
BEGIN { FS="^" ; LAST="$" }
$1 == LIST && $2 != LAST { printf "\n" ; printf "%s", $3 ; LAST=$2 }
$1 == LIST && $2 == LAST { print $4 }
END { printf "\n" }

Le shellscript:

$ cat rebuild.sh
#!/bin/ksh
if [ $# != 1 ] ; then
echo "Quelle liste ????"
exit
fi
if [ ! -d ~sympa/expl/$1 ] ; then
echo "La liste $1 n'existe pas !!!"
exit
fi
awk -f f_rebuild -v LIST=$1 result > newconf

diff ~sympa/expl/$1/config newconf

printf "Ok pour mise a jour de $1 [O|N]? "
read r
case $r in
O|o) mv ~sympa/expl/$1/config ~sympa/expl/$1/config.old ;
cp newconf ~sympa/expl/$1/config ;
echo " Done... " ;;
*) echo " Abort..." ;;
esac

===============================================================
Gilles MERCEY Tel: 01 60 76 45 37
adresse@cachée Fax: 01 60 76 43 21
---------------------------------------------------------------
INT - Centre de Calcul 91011 EVRY CEDEX
9, rue Charles Fourier FRANCE


On Fri, 6 Dec 2002 adresse@cachée wrote:

> On 6 Dec 2002 at 8:30, Aumont - Comite Reseaux des U wrote:
>
> > Pour de sombre raisons de programmation orientée objet, Sympa ne peut pas
> > actuellement créer dynamiquement la liste des proprio de listes.
> >
>
> J'ai écrit (j'ai fini hier) un petit script en perl qui récupére toutes les
> adresses mails (triées et avec élimination des doublons) contenues dans
> les fichiers config et qui sert de fichier include pour la liste
> listmestres.
>
> Bien sûr, je récupère de cette façon les adresses des propriétaires et des
> modérateurs, mais je pense qu'il est possible de l'améliorer... (je débute
> en PERL...)
>
> Le tout mis dans la crontab...
>
> Voici le script :
>
> #!/usr/bin/perl
>
> # lecture du répertoire pour récupérer la liste des listes
> opendir LISTES, "/home/sympa/expl" or die "Impossible d'ouvrir le
> répertoire";
> @listes = readdir LISTES;
>
> # ouverture du fichier de sortie
> # open (SORTIE, "+>/home/sympa/expl/listmestres/membres.ini") or die
> "Impossible de créer le fichier";
>
> open (SORTIE, ">/home/sympa/expl/listmestres/membres.ini") or die
> "Impossible de créer le fichier";
> # ouverture du fichier de config pour chaque liste et extraction des
> adresses e-mail contenues dedans
> foreach $liste (@listes) {
> open (ENTREE,"/home/sympa/expl/$liste/config") ;
> while (<ENTREE>) {
> $Ligne=<ENTREE>;
> # si la ligne contient une adresse e-mail alors récupération de
> l'adresse
> if ($Ligne =~ m/\@/)
> {
> @Ligne = split ' ', $Ligne;
> print SORTIE @Ligne[1]."\n";
> }
> }
> close ENTREE;
> }
> close SORTIE;
> close LISTES;
> close ENTREE;
>
> # tri du fichier de sortie
> open (ENTREE,"/home/sympa/expl/listmestres/membres.ini");
> @mails = <ENTREE>;
> close ENTREE;
> @t_mails = sort @mails;
> $temp1='';
> $temp2='';
> open (SORTIE,">/home/sympa/expl/listmestres/membres");
> for (@t_mails)
> {
> $temp1=$_;
> if ($temp1 ne $temp2) {print SORTIE $temp1;}
> $temp2=$temp1;
>
> }
> close SORTIE;
> #FIN
>
>
> Dans le même ordre d'idée, j'ai créé une liste de l'ensemble des inscrits
> au serveur en utilisant la requête suivante pour la source de données :
>
> SELECT email_user FROM user_table
>
> sur la base sympa
>
>
> --------------------------------------------------------
> Philippe Young
> Gestionnaire du robot de listes de l'académie de Créteil
>
>





Archives gérées par MHonArc 2.6.19+.

Haut de le page