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



         

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


print Soijjoctclass;

print "en: $1\n":

next: I tt обрабатываем многозначный атрибут aliases

if (s/~aliases:\s*//){

@aliases = split:

foreach $name (@aliases){ print "aliases: $name\n";

}

next; }

ft обрабатываем конец разделителя записей if ($_ eq $recordsep){

print "\n";

next; }

ft в противном случае просто печатаем найденный атрибут print;

close(OATA);

Если выполнить эту программу, то она выведет файл LDIF,

выглядящий примерно так:

dn: cn=shimmer, ou=data, ou=systems, dc=ccs, dc=hogwarts. dc=edu

objectclass: top

objectclass: machine

en: shimmer

address: 192.168.1.11

aliases: shim

aliases: shimmy

aliases: shimmydoodles

owner: David Davis

department: software

building: main

room: 909

manufacturer: Sun

model: UltraGO

dn: cn=bendir, ou=data. Ob=systems, ac=ccs, dc=hogwarts, dc=edu

objectclass: top

objectclass: machine

en: bendir

address: 192.168. 1.3

aliases: ben aliases: bendoodles owner: Cindy Colt rant; department:

 building1 west room: 143

manufacturer: Apple model: 7500/100

Имея этот LDIF-файл, можно применять одну из программ, распространяемых с сервером, для загрузки этих данных на сервер. Например, Idif2ldbm,

входящий в состав обоих серверов OpenLDAP и Netscape Directory Server, считывает LDIF-файл и напрямую импортирует его в формат сервера каталогов, избавляя от необходимости проходить через LDAP. Хотя эта программа используется только при неработающем сервере, она может обеспечить самый быстрый способ загрузки большого количества данных. Если нельзя остановить сервер, можно применить только что написанную на Perl программу для чтения LDIF-файлов и передать подобный файл на LDAP-сервер.

Добавим еще один способ: вот программа, в которой пропускается промежуточный шаг создания LDIF-файла, и наши данные напрямую импортируются на LDAP-сервер:

use Net::LDAP;

use Net::LDAP::Entry;

Sdatafile = "database";

Srecordsep = "-=-":

Sserver = $ARGV[0];

Sport = getservbynameC'ldap","tcp") || "389";




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