HEX
Server: Apache/2.4.62 (Unix) OpenSSL/1.1.1k
System: Linux ns565604.ip-54-39-133.net 4.18.0-553.50.1.el8_10.x86_64 #1 SMP Tue Apr 15 08:09:22 EDT 2025 x86_64
User: greer489 (1034)
PHP: 8.3.19
Disabled: NONE
Upload Files
File: //usr/share/doc/perl-LDAP/contrib/recursive-ldap-delete.pl
#!/usr/bin/perl -w
#
# recursive-ldap-delete.pl
#
# originally by Mike Jackson <mj@sci.fi>
# shortened by Peter Marschall <peter@adpm.de>
# based on ideas by Norbert Kiesel <nkiesel@tbdetworks.com>
#
# ToDo: check errors, handle references, ....

use strict;
use Net::LDAP;

my $server      = "localhost";
my $binddn      = "cn=directory manager";
my $bindpasswd  = "foobar";
my $delbranch   = "ou=users,dc=bigcorp,dc=com";		# branch to remove

my $ldap        = Net::LDAP->new( $server ) or die "$@";
$ldap->bind( $binddn, password => $bindpasswd, version => 3 );

my $search      = $ldap->search( base   => $delbranch,
                                 filter => "(objectclass=*)" );

# delete the entries found in a sorted way:
# those with more "," (= more elements) in their DN, which are deeper in the DIT, first
# trick for the sorting: tr/,// returns number of , (see perlfaq4 for details)
foreach my $e (sort { $b->dn =~ tr/,// <=> $a->dn =~ tr/,// } $search->entries()) {
  $ldap->delete($e);
}

$ldap->unbind();