[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 310
  • Last Modified:

Populating LDAP with test users

Hi,
 i am looking for a code, where in i can populate say 100 users in a particular ou in ldap (iPlanet). I would be glad if the experts could help in figuring out a way for this
Thanks
0
itsme_asif
Asked:
itsme_asif
  • 4
  • 2
  • 2
  • +1
1 Solution
 
itsme_asifAuthor Commented:
Thanks a lot, can i have some more examples, i am kinda rusty with perl
0
 
tone28Commented:
What kind of directory are you talking about? x.500? Active Directory? NDS?

Here is an example for active directory.

use Win32::OLE 'in';

my $server = "MyServerName";

my $obj = Win32::OLE->GetObject("LDAP://$server/OU=iPlanet,DC=Domain,DC=Com");


open(USERS, "users.txt") || die "Could not find users.txt file\n";
@users = <USERS>;
close(USERS);

chomp(@users);

# users.txt should be a file formated like
# Charles,Dickens,cdickens,scrooge
# Emily,Walworth,ewalworth,cookies
# etc...etc...

foreach my $user(@users) {

    my($firstname,$lastname,$userid,$password) = split("\,",$user);
      my $objUser   = $obj->Create("user", "cn=$firstname $lastname");
      $objUser->Put("sAMAccountName", "$userid");  
      $objUser->Put("userPrincipalName", "$userid\@domain.com");
      $objUser->Put("givenName", "$firstname");  
      $objUser->Put("sn", "$lastname");          
      $objUser->Put("displayName", "$firstname $lastname");
      
      $objUser->SetInfo;
      $objUser->SetPassword("$password");
      $objUser->{AccountDisabled} = FALSE;
      $objUser->SetInfo;
      
      if(Win32::OLE::LastError()) {
          print Win32::OLE::LastError,"\n\n";
        }
      else {
          print "Created $firstname $lastname : $userid\n";
      }
      
}

print "Done\n";
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
itsme_asifAuthor Commented:
I am looking for LDAP, i am using a iPlanet Directory Server 5.1 from Sun which is a LDAP. It would be really helpfull if you could give me a similar example as in AD.
0
 
tone28Commented:
I see. I am going to look into this a little more. I would use the perLdap module for this. I don't have enough information on iPlanet but I might find what I need to give you something to start with.

0
 
itsme_asifAuthor Commented:
Thanks a lot
0
 
ahoffmannCommented:
what's wrong with
  man Net::LDAP
as suggested by ozo?
Net::LDAP works perfect with iPlanet.
0
 
itsme_asifAuthor Commented:
do i have to download the package or if i add Net::LDAP in my code is enough? for example
use Net::LDAP;
 
 $ldap = Net::LDAP->new( 'ldap.bigfoot.com' ) or die "$@";
 
 $mesg = $ldap->bind ;    # an anonymous bind
 
 $mesg = $ldap->search( # perform a search
                        base   => "c=US",
                        filter => "(&(sn=Barr) (o=Texas Instruments))"
                      );
 
 $mesg->code && die $mesg->error;
 
 foreach $entry ($mesg->entries) { $entry->dump; }
 
 $mesg = $ldap->unbind;   # take down session
 
 
 $ldap = Net::LDAP->new( 'ldap.umich.edu' );
 
 # bind to a directory with dn and password
 $mesg = $ldap->bind( 'cn=root, o=University of Michigan, c=us',
                      password => 'secret'
                    );
 
 $result = $ldap->add( 'cn=Barbara Jensen, o=University of Michigan, c=US',
                       attr => [
                         'cn'   => ['Barbara Jensen', 'Barbs Jensen'],
                         'sn'   => 'Jensen',
                         'mail' => 'b.jensen@umich.edu',
                         'objectclass' => ['top', 'person',
                                           'organizationalPerson',
                                           'inetOrgPerson' ],
                       ]
                     );
 
 $result->code && warn "failed to add entry: ", $result->error ;
 $mesg = $ldap->unbind;  # take down session

would the above code work, with no modification (when the bind instructions are changes according to my directory)
0
 
ahoffmannCommented:
> do i have to download the package
you have to install Net::LDAP module
0

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

  • 4
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now