Perl данные из LDAP

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Electronik
капитан
Сообщения: 1593
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

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

Непрочитанное сообщение Electronik » 2012-03-26 14:44:26

а где прописан ipPhone?
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог