Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

44 lines (36 sloc) 1.078 kb
#!/usr/bin/perl -w
#
# recursive-ldap-delete.pl
#
# Mike Jackson <mj@sci.fi>
#
use strict;
use Net::LDAP;
my $server = "localhost";
my $binddn = "cn=directory manager";
my $bindpasswd = "foobar";
my $base = "dc=bigcorp,dc=com";
my $delbranch = "ou=users,$base"; # branch to remove
my $ldap = Net::LDAP->new( $server ) or die "$@";
$ldap->bind( $binddn, password => $bindpasswd, version => 3 );
my $result = $ldap->search( base => $delbranch,
filter => "(objectclass=*)" );
my @dnlist;
my $entry;
foreach $entry ( $result->all_entries ) { push @dnlist, $entry->dn }
# explode dn into an array and push
# arrays to indexed hash of arrays
my %HoL;
my $i = 0;
for ( @dnlist ) {
s/,$base//;
$HoL{$i} = [ split(",", $_) ];
$i++;
}
# sorted descending by number of members (leaf nodes last)
foreach my $key ( sort { @{$HoL{$b}} <=> @{$HoL{$a}} } keys %HoL ) {
my $dn = join(",", @{ $HoL{$key} }).",$base";
$ldap->delete($dn);
}
$entry->update ( $ldap );
$ldap->unbind;
Jump to Line
Something went wrong with that request. Please try again.