Se connecter au serveur LDAP
1: use Net::LDAP; 2: use Data::Dumper ; 3: 4: use strict ; 5: 6: my $ldap = Net::LDAP->new( 'http://directory.example.com:10389',"onerror"=>"die" ) or die "$@"; 7: $ldap->bind( # bind avec un dn et un password 8: 'uid=admin,ou=system', 9: password => 'secret' 10: ) or die $! ; 11: 12: ... 13: 14: $ldap->unbind() ;
Créer une entrée de type organizationalUnit correspondant à votre laboratoire (ex : UMR9999), afin de travailler dans votre propre sous-arborescence.
En dessous de votre entrée « UMR9999 », créer une entrée de type organizationalUnit que vous nommerez « groups ».
1: my $result = $ldap->add( 2: 'ou=groups,$my_OU 3: , attr => [ 4: 'objectclass' => ['top', 5: 'organizationalUnit' ], 6: ] 7: ); 8: 9: $result->code() && warn "failed to add entry: ", $result->error() ;
En dessous de votre entrée « UMR9999 », créer une entrée de type organizationalUnit que vous nommerez « users ».
En dessous de votre entrée « UMR9999 / groups », vous allez créer 10 entrées de type posixGroup.
Lister tous les groupes.
En dessous de votre entrée « UMR9999 / users », vous allez créer 50 entrées de type posixAccount comportant les attributs uid, sn, uidNumber, gidNumber, mail et userPassword.
1: for my $i (1..50) 2: { 3: my $result = $ldap->add( 4: "cn=user$i,ou=users,$my_OU" 5: , attr => [ 6: 'objectclass' => ['top', 7: "shadowAccount", 8: "inetOrgPerson", 9: "posixAccount"], 10: 'uid' => "user$i", 11: 'sn' => "User $i", 12: 'uidNumber' => "$i", 13: 'gidNumber' => $id, 14: 'homeDirectory' => "/home/user$i", 15: 'mail' => "user.$i\@example.com", 16: 'userPassword' => '' 17: ] 18: ); 19: $result->code() && warn "failed to add entry: ", $result->error() ; 20: }
Lister tous les utilisateurs.
Retirer les 25 derniers utilisateurs ajoutés.
Ajouter des utilisateurs dans les groupes.
Lister tous les membres du groupe « groupe_10 ».
1: my $result = $ldap->search( 2: "base" => "cn=group_10,ou=groups,$my_OU 3: , "scope" => "sub" 4: , "filter" => "objectClass=posixGroup" 5: ) ; 6: 7: for my $e ($result->entries()) 8: { 9: print join(", ", $e->get_value("memberUid")) ; 10: }
Lister tous les groupes auquels appartient l'utilisateur « user15 ».
Retirer des utilisateurs des groupes.
1: for my $i (1..10) 2: { 3: my $entries = $ldap->search( 4: "base" => "ou=groups,$my_OU", 5: , "scope" => "sub" 6: , "filter" => "objectClass=posixGroup" 7: ) ; 8: 9: for my $e ($entries->entries()) 10: { 11: $e->delete('memberUid') ; 12: $e->update($ldap) ; 13: }