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
itsme_asifAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

itsme_asifAuthor Commented:
Thanks a lot, can i have some more examples, i am kinda rusty with perl
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";
CompTIA Network+

Prepare for the CompTIA Network+ exam by learning how to troubleshoot, configure, and manage both wired and wireless networks.

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.
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.

itsme_asifAuthor Commented:
Thanks a lot
ahoffmannCommented:
what's wrong with
  man Net::LDAP
as suggested by ozo?
Net::LDAP works perfect with iPlanet.
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)
ahoffmannCommented:
> do i have to download the package
you have to install Net::LDAP module

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Perl

From novice to tech pro — start learning today.