• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 317
  • 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
Cloud Class® Course: Python 3 Fundamentals

This course will teach participants about installing and configuring Python, syntax, importing, statements, types, strings, booleans, files, lists, tuples, comprehensions, functions, and classes.

 
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Certified Penetration Testing

This CPTE Certified Penetration Testing Engineer course covers everything you need to know about becoming a Certified Penetration Testing Engineer. Career Path: Professional roles include Ethical Hackers, Security Consultants, System Administrators, and Chief Security Officers.

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