[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: изменение значений в ldap



Evgeny Yugov пишет:
Здравствуйте.

andy@korona-auto.com пишет:
День добрый. С протоколом ldap досконально не знаком, но знаю что помимо операций выборки возможны и операции добавления/изменения.

Есть windows AD, в котором у объектов типа user указан email адрес.
Возможно ли как-то поменять/добавить значение поля? Если можно киньте пример на shell/python или на другом языке.

И раз уж такая тема была затронута, то задам еще вопрос: может ли "рядовой" пользователь в AD сделать запрос на изменение атрибута объекта (поле email)? Если нет, то что необходимо сделать чтобы он смог его редактировать?

Делегирование полномочий творит чудеса.. Но надо ли это? ;)
Лучше собрать эти адреса, перепроверить, а потом залить всё сразу с помощью скрипта.

Где-то так (выкушено из скрипта на ActivePerl под Windows):
### $dn - DistingushedName обьекта, $email - понятно что ;)

use Win32::OLE;
use File::Copy;
use Encode;

my $objConn = Win32::OLE->CreateObject("ADODB.Connection");
$objConn->{Provider} = "ADsDSOObject";
$objConn->Open;


       $dn="LDAP://dc1/".$dn.",dc=garant,dc=local" if ($dn !~/^LDAP/);
       my $object = Win32::OLE->GetObject($dn);
       &w32err;
       &setprop($object,"mail",$email);

sub w32err
{ my $w32err=Win32::OLE->LastError();
       my ($res,$txt)=split / /,$w32err,2;
       if ($txt)
       {
       print encode("cp866",decode("cp1251",$txt))."\n";
       };
       return $res;
};
sub setprop
{
       my ($ouser,$prop,$val)=@_;
       if ($prop && $val)
       {
       print "Set $prop=". encode("cp866",decode("cp1251",$val))."\n";
       $ouser->Put($prop,$val);
       $ouser->SetInfo;
       if (&w32err) {die Win32::OLE->LastError();};
       };
};

--
Head office
Igor Chumak
System Administrator

OJSC “UIC "Generali Garant” 15/2 Chervonoarmiyska str.,
01004, Kyiv, Ukraine
Phone: +38(044)206 8820 E-Mail: i.chumak@generali.garant.ua www.generali.garant.ua


Reply to: