Novell Home

Add object attributes in eDirectory using LDAP and Perl

From Developer Community

This sample shows how to use the perl-ldap module to modify an object in eDirectory by adding attributes.

Sample Code

#!perl

use Net::LDAP;
use Net::LDAP::LDIF;
use File::Path qw(rmtree);
use File::Basename qw(basename);

print "Content-type: text/html\n\n";

$HOST = '137.65.138.159';
$PORT = 389;
$PASSWD   = 'novell';
$BASEDN   = "o=novell";
$ADMIN= "cn=admin,o=novell";
$searchstring="(objectclass=user)";
$attnames=["dn","cn","surname","mail","groupmembership"];

#connect to the server
until($ldap = Net::LDAP->new($HOST, port => $PORT)) {
  die "Can not connect to ldap://$HOST:$PORT/" if ++$count > 10;
  sleep 1;
}

$r = $ldap->bind($ADMIN, password => $PASSWD, version=>3);
die $r->error if $r->code;

$r = $ldap->modify("cn=pjones,ou=users,o=novell",
					add	=> { mail => ["pjones\@novell.com",
										"othermail\@novell.com"]});
die $r->error if $r->code;

$r = $ldap->search(	base 	=> 	$BASEDN,
					scope	=>	'sub',
					filter 	=> 	$searchstring,
					attrs	=>	$attnames);

foreach my $entry ($r->entries){
	print "<p><b>dn: ".$entry->dn."</b><br>";
	my @attrs = $entry->attributes;
	foreach my $attr (@attrs) {
		my @value = $entry->get_value($attr);
		
		foreach my $value (@value){
			print "$attr: $value <br>";
		}
	}
	print "</p>";
}
$ldap->unbind;

--Paul Jones

© 2008 Novell, Inc. All Rights Reserved.