On 7/14/05, Giuoco, Aaron <[EMAIL PROTECTED]> wrote:
> Please provide us all of your code related to creating the user, specifically 
> the stuff related to creation of the container.  I have created accounts with 
> commas in them before, so I know it's possible.  It has to be some kind of 
> small syntax error.
> 

Here you go.

use lib qw(d:\scripts);
use strict;
use warnings;
use DBI;
use lib;
use Net::LDAP qw(:all);





my $base;
my $base1="ou=users,ou=level2,dc=abc,dc=com";
my $base2="dc=abc,dc=com";
my $corporate_base="cn=users";
my $it_base="ou=xyz";
my $center_base="ou=center";
my $retail_base="ou=retail";
my $mobile_base="ou=mobile";
my $scope="subtree";
my $cn;
my $dn;

my $ldap;
my $mesg;
my $filter;
my $results;
my $count;


my $insert_rec='N';
my $lookup_key;
my $empid_offset=454333;
my $empid;
my $category;
my $firstname;
my $lastname;
my $middlename;
my $displayname;
my $street;
my $city;
my $state;
my $zipcode;
my $title;
my $branch_dept;
my $location;
my $phone;
my $fax;
my $mobile;
my $pager;
my $emailaddr;
my $homepage='http://homepage/';
my $userid;

my @row;

#### Process record while looping through the array

while ( @row = $sth->fetchrow_array ) 
{
###### Preparing DN and data
  
   $empid=$row[0];
   $category=$row[1];    
   $firstname=ucfirst(lc($row[2]));
   $lastname=ucfirst(lc($row[3]));
   $middlename=ucfirst(lc($row[4]));
   $street=$row[5];
   $city=$row[6];
   $state=$row[7];
   $zipcode=$row[8];
   $title=$row[9];
   $branch_dept=$row[10];
   $location=$row[11];
   $phone=$row[12];
   $fax=$row[13];
   $mobile=$row[14];
   $pager=$row[15];
   $emailaddr=$row[16];
   $userid=lc(substr($row[16], 0, length($row[16]) - 20));
   $cn="$lastname\, $firstname";
   $displayname=$lastname . ", " . $firstname;
   $lookup_key=$empid + $empid_offset;

   if ($category eq 'RETAIL')
   {
      $ldap=Net::LDAP->new('abc.com') 
                or die("Could not connect to LDAP server");

      #Connect to Active Directory server
      $mesg=$ldap->bind("[EMAIL PROTECTED]", password=>"password");
  
      $dn="cn=$cn,$retail_base,$base1";
      $base=$retail_base . $base2;

    }
    elsif ($category eq 'CORPORATE')
    {
      $ldap=Net::LDAP->new('abc.efg.com') 
                or die("Could not connect to LDAP server");

      #Connect to Active Directory server
      $mesg=$ldap->bind("[EMAIL PROTECTED]", password=>"password");
  
      $dn="cn=$cn,$corporate_base,$base2";
      $base=$corporate_base . $base2;

    }
    elsif ($category eq 'IT')
    {
      $ldap=Net::LDAP->new('abc.ijk.com') 
                or die("Could not connect to LDAP server");

      #Connect to Active Directory server
      $mesg=$ldap->bind("[EMAIL PROTECTED]", password=>"password");
  
      $dn="cn=$cn,$it_base,$base2";
      $base=$it_base . $base2;

    }


#### Check for duplicate Common Name (CN) before inserting record

    $filter="(&(objectclass=User)(cn=$cn))";
    $results=$ldap->search(base=>$base, scope=>$scope, filter=>$filter);        
    $count=$results->count;         
    

    if ($count ne 0)
    {
       print(ERRFH "error $cn \n");
      $cn="$lastname\, $firstname $middlename";
       $displayname=$lastname . ", " . $firstname . " " . $middlename;
       print(ERRFH "error $cn \n");

       $filter="(&(objectclass=User)(cn=$cn))";
       $results=$ldap->search(base=>$base, scope=>$scope, filter=>$filter);     
       $count=$results->count;

       if ($count ne 0)
       {
           print(ERRFH "error $userid \n");
       }
       else
       {
           $insert_rec='Y';
       }
    }
    else
    {
       $insert_rec='Y';
    }


    if ($insert_rec eq 'Y')
    {
      $results = $ldap->add($dn, 
                 attr=>['cn' => $cn, 
                        'givenname' => $firstname,
                        'sn' => $lastname,
                        'displayname' => $displayname,
                        'description' => $lookup_key,
                        'physicaldeliveryofficename' => $location,
                        'telephonenumber' => $phone, 
                        'mail' => $emailaddr,
                        'wwwhomepage' => $homepage,
                        'userprincipalname' => $emailaddr,
                        'samaccountname' =>  $userid,
                        'streetaddress' => $street,
                        'l' => $city,
                        'st' => $state,
                        'postalcode' => $zipcode,
                        'c' => 'US',
                        'title' => $title,
                        'department' => $branch_dept,
                        'company' => 'xyz',
                        'pager' => $pager,
                        'mobile' => $mobile,
                        'facsimiletelephonenumber' => $fax,
                        'objectclass' => ['top', 'person',
'organizationalPerson', 'user'],
                     ]);

    $results->code && warn "failed to add entry: $firstname, $lastname
", $results->error;
 
  
    if ($results->code == 0)
    {
       print(FH "inserted @row \n");
    }
    else 
    {
       print(ERRFH "error @row \n");
    }
    $insert_rec='N'
  }

  ####Unbind from Active Directory server
  $mesg=$ldap->unbind;
}


####  Disconnect from Oracle DB
$sth->finish();
$dbh->disconnect or warn "Disconnection failed: $DBI::errstr\n";

Reply via email to