Skip to content

Instantly share code, notes, and snippets.

@DamianZaremba
Created August 13, 2011 16:32
Show Gist options
  • Save DamianZaremba/1144009 to your computer and use it in GitHub Desktop.
Save DamianZaremba/1144009 to your computer and use it in GitHub Desktop.
#!/usr/bin/perl
use warnings;
use strict;
use Net::LDAP;
use Data::Dumper;
my $ldap = Net::LDAP->new("ldap.cluenet.org", timeout => 10);
my $servers = {
abc => {
name => 'test',
owner => 'damian',
admins => [
'rsmithy'
],
}
};
my $users = {};
for( keys(%$servers) ) {
my $server = $servers->{$_};
if( $users->{$server->{'owner'}} ) {
$users->{$server->{'owner'} . '@CLUENET.ORG'} = {
username => $server->{'owner'},
dummy => 1,
};
$users->{$server->{"name"} . "-" . $server->{'owner'}} = {
username => $server->{'owner'},
server => $server->{"name"}
};
}
if( $server->{'admins'} ) {
for( @{ $server->{'admins'} } ) {
if( !defined( $users->{$_} ) ) {
$users->{$_ . '@CLUENET.ORG'} = {
username => $_,
dummy => 1,
};
$users->{$server->{"name"} . "-" . $_} = {
username => $_,
server => $server->{"name"}
};
}
}
}
}
print Dumper($users);
for( keys(%$users) ) {
my $user = $users->{$_};
my $mesg = $ldap->search(
filter => "(&(!(|(objectClass=suspendedUser)(objectClass=deletedUser)))(objectClass=person)(uid=" . $user->{"username"} . "))",
base => "ou=people,dc=cluenet,dc=org",
);
for( $mesg->entries ) {
my $server = $users->{$_}->{'server'};
}
}
print Dumper($users);
@DamianZaremba
Copy link
Author

Output:

[damian@finnix ~]$ perl5.12.4 wth.pl
$VAR1 = {
'[email protected]' => {
'dummy' => 1,
'username' => 'rsmithy'
},
'test-rsmithy' => {
'server' => 'test',
'username' => 'rsmithy'
}
};
$VAR1 = {
'[email protected]' => {
'dummy' => 1,
'username' => 'rsmithy'
},
'test-rsmithy' => {
'server' => 'test',
'username' => 'rsmithy'
},
'Net::LDAP::Entry=HASH(0x21ee0c0)' => {},
'Net::LDAP::Entry=HASH(0x21dd978)' => {}
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment