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: