$mesg = $entry->add('objectClass' => 'ntUser',
'ntUserDomainId' => $ntUserDomainId,
'ntUserHomeDir' => "\\\\host.tld\\home\\$ntUserDomainId"
);
.
When I run my program, I get this error:
Use of uninitialized value in concatenation (.) or string at
./add_nt_attribs.pl line 120, <STDIN> line 1.
Use of uninitialized value in length at
/usr/local/perl-5.8/lib/site_perl/5.8.8/Convert/ASN1/_encode.pm line
143, <STDIN> line 1.
Use of uninitialized value in concatenation (.) or string at
/usr/local/perl-5.8/lib/site_perl/5.8.8/Convert/ASN1/_encode.pm line
144, <STDIN> line 1.
ntUserDomainId: value #0 invalid per syntax at
/usr/local/perl-5.8/lib/site_perl/5.8.8/Net/LDAP/Entry.pm line 268
$entry already exists in LDAP, and I'm just trying to add this new
objectClass and related attributes to the entry. Am I doing this the
wrong way?
Should I be using a function other than entry->add(), like $ldap->modify()?
--
Prentice
No, I did not see your post, but I got a copy of my e-mail that I just
sent. It was the first e-mail I received from this list in a while.
Turning off warning and using strict did not make any difference.
--
Prentice
John Perkins wrote:
> On 02/17/2011 03:04 PM, Prentice Bisbal wrote:
> You might want to try splitting that into 3 separate $entry->add() calls
> to see if you can narrow down which value it is having issues with.
>
> John
>
John,
I effectively did that by commenting out lines 1 and 2 individually and
simultaneously with no dice. When I comment them both out, I get the
error that objectClass ntUser requires the attribute ntUserDomainId, so
I think at least those two must be added together.
--
Prentice
ntUserDomainId: value #0 invalid per syntax
This makes me think somewhere an array is being used instead of a string.
--
Prentice Bisbal
Linux Software Support Specialist/System Administrator
School of Natural Sciences
Institute for Advanced Study
Princeton, NJ
> Okay guys, I need another pair of eyes to try find an error in my
> code. Can any of you see anything wrong with this bit of code?
>
> $mesg = $entry->add('objectClass' => 'ntUser',
> 'ntUserDomainId' => $ntUserDomainId,
> 'ntUserHomeDir' =>
> "\\\\host.tld\\home\\$ntUserDomainId" );
>
> .
>
> When I run my program, I get this error:
>
> Use of uninitialized value in concatenation (.) or string at
> ./add_nt_attribs.pl line 120, <STDIN> line 1.
> Use of uninitialized value in length at
> /usr/local/perl-5.8/lib/site_perl/5.8.8/Convert/ASN1/_encode.pm line
> 143, <STDIN> line 1.
> Use of uninitialized value in concatenation (.) or string at
> /usr/local/perl-5.8/lib/site_perl/5.8.8/Convert/ASN1/_encode.pm line
> 144, <STDIN> line 1.
> ntUserDomainId: value #0 invalid per syntax at
> /usr/local/perl-5.8/lib/site_perl/5.8.8/Net/LDAP/Entry.pm line 268
value #0 is referring to the entry's first attribute type value, please
check this value.
-Dieter
--
Dieter Klünter | Systemberatung
http://dkluenter.de
GPG Key ID:DA147B05
53°37'09,95"N
10°08'02,42"E
if (something) {
my $ntUserDomainId = something_else;
} else {
.....
}
$mesg = $entry->add('objectClass' => 'ntUser',
'ntUserDomainId' => $ntUserDomainId,
'ntUserHomeDir' => "\\\\host.tld\\home\\$ntUserDomainId"
);
Obviously, this scoped $ntUserDomainId incorrectly, so it was undefined
in my entry->add function. A subtle mistake that I kept overlooking. I
used the debugger, but was checking it's value as soon as it was
defined, and not where the error was actually occuring. D'oh!
Thanks again for all the quick, helpful response.
Prentice
> I cut off the last line of the errors, which says this, which might be
> an additional clue:
>
> ntUserDomainId: value #0 invalid per syntax
What does your $ntUserDomainId value look like?
If you call $ldap->debug(15) before $entry->add you will get some extra output showing what perl's sent to your server, and that should provide a big clue.
Chris
Thanks for the tip. I figured out the source of my problem (you probably
are reading your e-mails in order so haven't gotten to that one yet),
but that's a trick that will be very helpful in the future.
--
Prentice