이 코드는LDAP를 사용하여 CN을 추출 하시겠습니까?
#!/usr/bin/perl
use warnings;
use strict;
use Net::LDAP;
use Data::Dumper;
my $dn="CN=...";
my $password="xxx";
my $ldap = Net::LDAP->new('example.com') or die "[email protected]";
my $mesg = $ldap->bind($dn, password=>$password);
if ($mesg->code) { die "uuuu $mesg"; }
$mesg = $ldap->search(base => "dc=test,dc=example,dc=com", filter => "(name=LIST)",);
my $ref = $mesg->entry->get_value("member", asref => 1);
print Dumper $ref;
foreach my $string (@{$ref}) {
$string =~ /CN=(.+?),.*/;
print $1 . "\n";
}
정규 표현식을 사용하여 CN 출력 :
Dumper
사용
그래서 더 많은 정보가 있는지 궁금하네요. 정규 표현식을 사용하는 대신 "CN"방식으로 이러한 CN을 추출 할 수 있습니까?
업데이트 :
Javs 답변에 따르면이 해결책입니다.
my $ref = $mesg->entry->get_value("member", asref => 1);
foreach my $string (@{$ref}) {
print ldap_explode_dn($string)->[0]{CN} . "\n";
}
만약'print Dumper $ cn;'이라면'$ VAR1 = 'LIST';'를 얻을 수 있습니다. –
@Sandra Schlichting 오, 미안, 이제 네가 원하는 걸 얻는다. 내 편집을 확인하십시오. – javs
당신의 ldap 서버가 반환하는 것에 대해 일관성이 있다면'$ dn -> [0] {CN}'(여기서 $ dn은 ldap_explode_dn의 결과입니다) 그렇지 않으면 결과 배열을 검사하고 해시. – javs