У меня есть этот код, который работает.
#!/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' )
],