On Apr 20, 2010, at 5:09 PM, piet paaltjens wrote:

> Hi,
> i'm new to Net::LDAP and have difficulty to make Net::LDAP execute an 'add' 
> or 'modify'. Can somebody point out what i'm doing wrong?
> This is my code:
> #!d:\perl\bin\perl.exe
> 
> use Data::Dumper;
> use Net::LDAP;
> 
> use strict;
> 
> my 
> ($attr,$ldap,$mesg,$userToAuthenticate,$passwd,@ocs,@atts,@bju_attrs,%add_attrs,%modify_attrs);
> 
> @bju_attrs = qw ( givenName sn physicalDeliveryOfficeName telephoneNumber 
> streetAddress postOfficeBox l st postalCode c co countryCode homePhone pager 
> mobile facsimileTelephoneNumber ipPhone title department company manager 
> directReports);
> 
> $add_attrs { givenName } = "JustaName";
> $modify_attrs {company} = "Roodbms";
> 
> $userToAuthenticate = $ARGV[0];
> #print STDOUT ("userToAuthenticate= $userToAuthenticate\n");
> $passwd = $ARGV[1];
> #print STDOUT ("passwd= $passwd\n");
> 
> $ldap = Net::LDAP->new ( "mymachine.mydomain" ) or die "$@";
> 
> $mesg = $ldap->bind ( "$userToAuthenticate",          
>                       password => "$passwd",
>                       version => 3 );
> 
> print STDOUT ("After: bind\, mesg= \n".Dumper(%$mesg)."\n\n");
> 
> #my @Attrs = qw( );           # request all available attributes
>                               # to be returned.
> 
> #my $result = LDAPsearch ( $ldap, "sn=ordinary", \...@attrs);
> my $result = LDAPsearch ( $ldap, "sn=ordinary", \...@bju_attrs);
> print STDOUT ("result= \n".Dumper(%$result)."\n\n");
> print_result_by_entry($result);
> #
> # Now attempt to add/modify (a) value(s) to/of a DN
> #
> my $dn = "DC=Roodbms,CN=Users,CN=ordinary"; # This is shown in 
> LDAPExplorerTool2
> #
> # First attempt: ADD
> #
> foreach $attr (keys %add_attrs)
> {
>  print STDOUT ("Adding attribute: $attr with value: ".$add_attrs{$attr}."\n");
> }
> 
> my $result = LDAPaddUsingHash ( $ldap, $dn, \%add_attrs );

You do not check the result of the add, it probably tells you that you passed a 
bad DN.

actually you do not check any return status, you just dump the object contents. 
You
really should check $result->code

$dn = "DC=Roodbms,CN=Users,CN=ordinary";

but as you can tell from your search results, you DN is 
"CN=ordinary,CN=Users,DC=Roodbms"

so I would suggest that LDAPExplorerTool2 is reporting the DN backwards

Graham.

Reply via email to