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";
