Bonjour,

En attendant d'être complètement autonome (un jour je l'aurai), je galère sur un tri. En effet, je ne sais pas qu'elle est la meilleur façon et fonction à utiliser.
J'ai quand même réussi à faire un début de script qui me donne la liste suivante en provenance de mon LDAP :
dn: uid=toto,ou=People,dc=exemple,dc=org
dn: uid=tata,ou=People,dc=exemple,dc=org
shadowExpire: 14853
dn: uid=coco,ou=People,dc=exemple,dc=org
shadowExpire: 15431
dn: uid=kiki,ou=People,dc=exemple,dc=org
J'ai essayé avec la fonction grep ou la boucle foreach, j'ai réussi simplement à extraire les ligne shadowExpire.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#
!/usr/bin/perl
use warnings;
use strict;
 
my @list = (`ldapsearch -h hostname.com -D cn=proxyuser,dc=exemple,dc=org -w XXXXXXX -b ou=People,dc=exemple,dc=org uid=* shadowExpire`);
 
foreach my $entry (@list) {
                        chomp ($entry);
                        my @i=$entry;
                        if ($i[0] =~ /dn/) {
                        my $flag = $entry;
                        }
                        if ($i[0] =~ /shadowExpire/) {
                        print "$flag \n $i[0]\n";
                        $flag="";
                        }
}
Malheureusement, mon objectif est de sortir que les lignes avec uid qui sont suivies de la ligne shadowExpire. J'essaye de mettre la ligne antérieure dans la variable $flag mais celle ci ne peut pas être prise en compte dans la 2eme condition ....

Global symbol "$flag" requires explicit package name at ./shadowexp_control.pl line 15.
Global symbol "$flag" requires explicit package name at ./shadowexp_control.pl line 16.
Comment puis je faire ?
Merci de votre aide.


Merci pour votre aide ...