Instead of this:

    $dn="cn=$cn,$retail_base,$base1";

try this:

    $dn="cn=" . $lastname . "\\," . $firstname . ",$retail_base,$base1";

Do similar for your Corporate and IT categories.  Also, if you set your $dn 
variable like above, your $cn varible can be changed to this:

    $cn="$lastname, $firstname";

The CN of an AD account doesn't need the comma escaped.  But in the name of a 
container you are creating, commas must be escaped.  Try it and let us know.

AG


> -----Original Message-----
> From: wy [mailto:[EMAIL PROTECTED]
> Sent: Thursday, July 14, 2005 4:57 PM
> To: Giuoco, Aaron
> Cc: Glenn Lamb; [email protected]
> Subject: Re: Problem using comma in Common Name
> 
> 
> 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