Можно ли это сделать с помощью функций LDAP? - PullRequest
1 голос
/ 06 января 2011

У меня есть этот код, который работает.

#!/usr/bin/perl

use warnings;
use strict;
use Net::LDAP;
use Data::Dumper;

my $dn="...";
my $password="...";

my $ldap = Net::LDAP->new('...') or die "$@";
my $mesg = $ldap->bind($dn, password => $password);
if ($mesg->code) { die "uuuu $mesg"; }

$mesg = $ldap->search(
    base => "...",
    scope => 'one',
    filter => '(groupType=-2147483646)',
    attrs => ['sAMAccountName'], 
    );

my @ad = ( );

foreach ($mesg->entries) {
    push @ad, $_->asn->{attributes}[0]->{vals}[0];
}

foreach (@ad) {
    print;
    print "\n";
}

и выводит имя группы безопасности.

Поэтому мне было интересно, есть ли в LDAP (Active Directory) функции для извлечения значений из дерева, вместо того, чтобы выполнять жесткий код пути с использованием массивов и хешей, как я делаю в

push @ad, $_->asn->{attributes}[0]->{vals}[0];

Дерево выглядит так

'entries' => [
               bless( {
                        'changes' => [],
                        'changetype' => 'modify',
                        'asn' => {
                                   'objectName' => '...',
                                   'attributes' => [
                                                     {
                                                       'type' => 'sAMAccountName',
                                                       'vals' => [
                                                                   'test-group-1'
                                                                 ]
                                                     }
                                                   ]
                                 }
                      }, 'Net::LDAP::Entry' ),
               bless( {
                        'changes' => [],
                        'changetype' => 'modify',
                        'asn' => {
                                   'objectName' => '...',
                                   'attributes' => [
                                                     {
                                                       'type' => 'sAMAccountName',
                                                       'vals' => [
                                                                   'test-group-3'
                                                                 ]
                                                     }
                                                   ]
                                 }
                      }, 'Net::LDAP::Entry' )
             ],

1 Ответ

2 голосов
/ 06 января 2011
push @ad, $_->get_value('sAMAccountName');
...