dc=prog,dc=com,dc=tw
     ou=Host
     ou=People(referral to server1)
           uid=ccc
     ou=se4 (referral to server2)
     uid=aaa
     uid=bbb

The code result will  list ou=Host , uid=aaa , uid=bbb and it attr.
But Can not list ou=People  ou=se4 (or any information).
How to list those referral information?

#!/usr/bin/perl -w
use Net::LDAP;
 $Server="211.XX.XX.XX";
$BaseDN="cn=Manager,dc=prog,dc=com,dc=tw";
$Passwd="abc123";
$DN=shift || "dc=prog,dc=com,dc=tw";

my $ldap=new Net::LDAP($Server);
my $mesg=$ldap->bind("$BaseDN",password=>"$Passwd",version => 3);

$ldap->search(base=>"$DN",scope=>"subtree",filter=>"(objectClass=*)",callbac
k => \&handle_object,);

sub handle_object {
  my $msg  = shift;       # Net::LDAP::Message object
  my $data = shift;       # May be Net::LDAP::Entry or Net::LDAP::Reference
  return unless $data;
  return handle_entry( $msg, $data )     if $data->isa("Net::LDAP::Entry");
  return handle_reference( $msg, $data ) if
$data->isa("Net::LDAP::Reference");
  return;
}


sub handle_entry {

  my $msg  = shift;
  my $entry = shift;
     foreach my $attr ($entry->attributes()) {
     my @value=$entry->get_value($attr);
     foreach my $value(@value){

     print '    <attr name="' . $attr . '"><value>' . $value .
'</value></attr>' . "\n";

}
}
}

sub handle_reference {

  my $msg  = shift;
  my $data = shift;

  foreach my $obj( $data->references() ) {

    # Oooh, recursion!  Might be a reference to another reference, after all
    return handle_object( $msg, $obj );
  }
}




"news.hinet.net" <[EMAIL PROTECTED]> �b�l�� news: �����g...
> The ldap_error_text($mesg->code()) ahow this messgae when i search an ou
> that referral
> to another server. Ok! I know this is a referral .But how to solve this
> problem?
> How to search the remote server data and what is the server info ?
>
>


Reply via email to