Страница 1 из 1

Perl данные из LDAP

Добавлено: 2012-03-22 11:39:35
Гость
В перле я практически ноль - ни как не могу разобраться с идеологией!!!!
Помогите с решением - у каждого OU, свой ID (тут все ок - по группам отсеиваю), далее хочу если попал в группу, получить его ipPhone

Код: Выделить всё

#!/usr/bin/perl

use Net::LDAP;

my $ADcontroller="d1.d.local";
my $ADDC="DC=d1,DC=d,DC=local";
my $ADGroupsSearchBase = "OU=org1, $ADDC";
my $ADUsersSearchBase = "OU=org1, $ADDC";

$ADuser="admin";
$ADpass="1111";

my $ADfieldTelephone="ipPhone";
my $ADfieldMember = "member";
my $ADfieldDescription = "description";

sub LDAPsearch
{
#    print @_;
    my($base, $searchString, $attrs) = @_;


     my $ret = $ldap->search ( base    => "$base",
                                scope   => "sub",
                                filter  => "$searchString",
                                attrs   =>  $attrs
                              );
                              
    LDAPerror("LDAPsearch", $ret)  && die if( $ret->code );
    return $ret;
}


$ldap = Net::LDAP->new ( $ADcontroller ) or die "$@";

$mesg = $ldap->bind ( dn=>"CN=$ADuser,CN=Users,$ADDC", password =>$ADpass);

my $ldapGroups = LDAPsearch(
		$ADGroupsSearchBase,
		"$ADfieldDescription=*",
		[ $ADfieldMember, $ADfieldDescription ]
)->as_struct;

my $hash = ();

while (my ($distinguishedName, $groupAttrs) = each (%$ldapGroups) )
{
    print "\nProccesing GROUP: [$distinguishedName]\n";

    my $attrMembers = $groupAttrs->{ $ADfieldMember } or next;
    my $desc = $groupAttrs->{ $ADfieldDescription } or next;
    my $groupNumber = "@$desc";
    
    print "MEMBERS: @$attrMembers\nDESC: $groupNumber (Count=$#$attrMembers+1)\n";
    
    foreach my $member  (@$attrMembers) {
    
	print "\nMEMBER:\t$member\n";

	my $ldapMember = LDAPsearch1(
	    $member,
	    "$ADfieldTelephone=*",
	    [ $ADfieldTelephone ]
	)->as_struct;

	while (my ($key, $val) = each (%$ldapMember) )
	{
	    print "\nProccesing MEMBERS: [$key]\n";
	    print "ipPhone = $val->{ $ipphone }\n";
	}
    }
}

 sub LDAPerror
 {
   my ($from, $mesg) = @_;
   print "Return code: ", $mesg->code;
   print "\tMessage: ", $mesg->error_name;
   print " :",          $mesg->error_text;
   print "MessageID: ", $mesg->mesg_id;
   print "\tDN: ", $mesg->dn;
 }
вывод :
# ./ad_extensions1.pl


Proccesing GROUP: [CN=otd1,OU=otd1,OU=org1,DC=d1,DC=d,DC=local]
MEMBERS: CN=i.ivanov,OU=otd1,OU=org1,DC=d1,DC=d,DC=local CN=p.petrov,OU=otd1,OU=org1,DC=d1,DC=d,DC=local CN=v.volkov,OU=otd1,OU=org1,DC=d1,DC=d,DC=local CN=test2,OU=CONSULTANT,OU=org1,DC=d1,DC=d,DC=local
DESC: 7000 (Count=3+1)

MEMBER: CN=i.ivanov,OU=otd1,OU=org1,DC=d1,DC=d,DC=local

Proccesing MEMBERS: [CN=i.ivanov,OU=otd1,OU=org1,DC=d1,DC=d,DC=local]
ipPhone =

MEMBER: CN=p.petrov,OU=otd1,OU=org1,DC=d1,DC=d,DC=local

Proccesing MEMBERS: [CN=p.petrov,OU=otd1,OU=org1,DC=d1,DC=d,DC=local]
ipPhone =

MEMBER: CN=v.volkov,OU=otd1,OU=org1,DC=d1,DC=d,DC=local

Proccesing MEMBERS: [CN=v.volkov,OU=otd1,OU=org1,DC=d1,DC=d,DC=local]
ipPhone =

MEMBER: CN=test2,OU=CONSULTANT,OU=org1,DC=d1,DC=d,DC=local

Proccesing GROUP: [CN=otd2,OU=otd2,OU=org1,DC=d1,DC=d,DC=local]
MEMBERS: CN=v.krasnov,OU=org1,DC=d1,DC=d,DC=local CN=v.krotov,OU=OPER,OU=org1,DC=d1,DC=d,DC=local CN=e.roschina,OU=otd2,OU=org1,DC=d1,DC=d,DC=local CN=e.gafyatulina,OU=otd2,OU=org1,DC=d1,DC=d,DC=local CN=r.muhamatullin,OU=otd2,OU=org1,DC=d1,DC=d,DC=local CN=o.rozhina,OU=otd2,OU=org1,DC=d1,DC=d,DC=local
DESC: 7100 (Count=5+1)

MEMBER: CN=v.krasnov,OU=org1,DC=d1,DC=d,DC=local

MEMBER: CN=v.krotov,OU=OPER,OU=org1,DC=d1,DC=d,DC=local

MEMBER: CN=e.roschina,OU=otd2,OU=org1,DC=d1,DC=d,DC=local

MEMBER: CN=e.gafyatulina,OU=otd2,OU=org1,DC=d1,DC=d,DC=local

MEMBER: CN=r.muhamatullin,OU=otd2,OU=org1,DC=d1,DC=d,DC=local

MEMBER: CN=o.rozhina,OU=otd2,OU=org1,DC=d1,DC=d,DC=local

Re: Perl данные из LDAP

Добавлено: 2012-03-26 14:44:26
Electronik
а где прописан ipPhone?