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



Создание системы учетных записей для работы с пользователями - часть 6


sub AppendAccountXML {

 получаем полный путь к файлу

my $filename = shift;

ft получаем ссылку на анонимный хэш записи

ту Irecord = shift;

и XML::Writer использует объекты IO::File для управления и выводом use 10::File;

# дописываем в этот файл $fh = new 10: :File("»$filename") or die "Unable tt append to file:$!\n";

# инициализируем модуль XML::Writer и говорим ему

# записывать данные в файловый дескриптор

$fh use XML;;Writer; my $w = new XML::Writer(OUTPUT => $fh);

# записываем открывающий тег для каждой записи <account> $w->startTag("account");

# записываем открывающие/закрывающие внутренние теги и

# данные в <account>

foreach my $field (keys %{$record}){

print $fh "\n\t";

$w->startTag($field);

$w->characters($$record{$field});

$w->endTag;

}

print $fh "\n";

# записываем закрывающий тег для каждой записи <account>

$w->endTag;

$w->end;

$fh->close();

}

Теперь можно использовать всего лишь одну строчку, чтобы получить данные и записать их в файл очереди:

&AppondAcco:jntXML($addqueue. ^Collect In formation);

Вот что получается в результате работы этой подпрограммы:

<account>

<login>bobf</]ogin>

<fullname>Boh Fate'/fiil lr.ame>

<id>24-9057</iri>

<type>staff</type>

<password>passwora</password>

<status>to_be_created</5tatus>

</account>

Да, мы храним пароли открытым текстом. Это очень плохая идея, и даже в случае с нашей демонстрационной системой стоит дважды подумать, прежде чем ее использовать. В настоящей системе учетных записей надо либо шифровать пароль перед тем, как помещать его в очередь, либо вообще не хранить его там.

Функция AppendAccountXML() будет применяться еще раз, когда мы захотим записать данные в очередь удаления и в нашу базу данных учетных записей.

Использование модуля XML: :Writer в подпрограмме AppendAccountXMLO имеет несколько преимуществ:




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