Perl для системного администрирования



         

LDAP: сложная служба каталогов - часть 17


Удаление элементов

Удаление элементов из каталога - это простое дело (и необратимое, так что будьте осторожны). Вот отрывок программы, из которой, для краткости, снова удален код, реализующий соединение с сервером:

use Mozilla::LDAP::Conn;

П если у вас есть элемент, вы можете использовать

 if $c->delete($entry->getDN()) $c->delete($dn) or

die "Невозможно удалить элемент: ". $c->getErrorString()."\n";

use Net::LOAP;

$res = $c->delete($dn);

die "Невозможно удалить, код ошибки #".

$res->code() if $res->code();

Важно обратить внимание на то, что в обоих модулях delete ()удаляет по одному элементу за один раз. Если необходимо убрать поддерево целиком, сначала следует найти все дочерние элементы этого поддерева, используя пространство sub или one, а затем обойти в цикле возвращаемые значения, удаляя элементы на каждой итерации. После того как уничтожены дочерние элементы, можно удалить вершину этого поддерева.

Изменение имен элементов

Последние операции с LDAP, которые мы рассмотрим, касаются двух типов изменений элементов LDAP. Первый тип - это изменение DN- и RDN-имен. Преобразовать RDN-имя элемента просто, и эта операция поддерживается обоими модулями. Вот версия для Mozilla: : LDAP:

use Mozilla::LDAP::Conn:

$c->modifyRDN($newRDN.SoldDN.$delold) or

die "Невозможно переименовать элемент'".

$c->getErrO''St":pg(). "\n".

В приведенном отрывке все должно быть понятно, за исключением параметра $delod метода Mjai;'yRDN(). Если он равен 0, то LDAP-библиотеки удалят из элементов значения, совпадающие с измененными RDN-именами. Например, если первично в RDN-имени элемента содержался атрибут ; (от «location», местоположение), но само RDN-имя было изменено, то старый атрибут 1 элемента будет удален и останется только новое значение.

Вот эквивалентный вариант для переименования элемента в Net: : LUA:

use Net::iDAP;

$res = $c->inoddn($oldDN

newrdn => SnewRDN.

deleteoldrdn => 1);




Содержание  Назад  Вперед