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



         

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


objectclass machine requires-:

,-• п ullOrtS

a-:a;;es

building, room.

manufacturer, model

После того как сервер настроен нужным образом, можно подумать об импортировании данных. Один из вариантов - провести загрузку большой единой операцией с помощью LDIF. Если приведенный выше отрывок из базы данных напомнил вам о формате LDIF, значит, вы на правильном пути. Эта схожесть упрощает преобразование. Тем не менее, нужно остерегаться ловушек:

Продолжающиеся строки

В нашей базе данных нет элементов, значения которых занимали бы несколько строк, иначе следовало бы убедиться, что вывод удовлетворяет стандарту LDIF. Стандарт LDIF требует, чтобы все длинные строки начинались строго с одного пробела.

Разделители элементов

Между элементами в базе данных в качестве разделителя используется симпатичная последовательность -=-. Два разделителя строк (т. е. пустая строка) должны находиться между элементами LDIF, так что нужно будет удалить эту последовательность из вводимых данных.

Разделители атрибутов

В настоящее время в наших данных есть только один атрибут с несколькими значениями: aliases (псевдонимы). LDIF обрабатывает многозначные атрибуты, перечисляя каждое значение на отдельной строке. Если встретится несколько атрибутов, то понадобится специальный код, печатающий для каждого значения отдельную строку. Если бы не эта особенность, программа, преобразующая наш формат в LDIF, представляла бы собой одну строку кода на Perl.

Но даже и с этими ловушками программа преобразования на удивление проста:

Sdatafile = "database";

Srecordsep = "-=-\n";

Ssuffix = "ou=data, ou=systems, dc=ccs. dc=hogwarts. dc=edu";

Sobjectclass = «EOC;

objectclass: top

objectclass: machine

EOC

open(DATA, Sdatafile) or aie "Невозможно открыть Sdataf ile: $''.n";

Модули Perl не работают с зги», даже если в специфики-;'!'

while (<DATA>) {

ft выводим заголовок для каждого элемента if (/name:\s-(.-)/){

print "arr сп=$1, $suffix\n":




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