1#!/usr/bin/perl -w 2# 3# recursive-ldap-delete.pl 4# 5# originally by Mike Jackson <mj@sci.fi> 6# shortened by Peter Marschall <peter@adpm.de> 7# based on ideas by Norbert Kiesel <nkiesel@tbdetworks.com> 8# 9# ToDo: check errors, handle references, .... 10 11use strict; 12use Net::LDAP; 13 14my $server = "localhost"; 15my $binddn = "cn=directory manager"; 16my $bindpasswd = "foobar"; 17my $delbranch = "ou=users,dc=bigcorp,dc=com"; # branch to remove 18 19my $ldap = Net::LDAP->new( $server ) or die "$@"; 20$ldap->bind( $binddn, password => $bindpasswd, version => 3 ); 21 22my $search = $ldap->search( base => $delbranch, 23 filter => "(objectclass=*)" ); 24 25# delete the entries found in a sorted way: 26# those with more "," (= more elements) in their DN, which are deeper in the DIT, first 27# trick for the sorting: tr/,// returns number of , (see perlfaq4 for details) 28foreach my $e (sort { $b->dn =~ tr/,// <=> $a->dn =~ tr/,// } $search->entries()) { 29 $ldap->delete($e); 30} 31 32$ldap->unbind(); 33