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


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


Saccountadd = "CreateUnixAccount";

tt имя подпрограммы, удаляющей учетные записи

Saccountdel = "DeleteUnixAccount";

}

}

Рассмотрим сценарий, обрабатывающий очередь добавления:

use Account;

use XML;:Simple;

SlnitAccount;

считываем низкоуровневые подпрограммы

&ReadAddQueue;

считываем и анализируем очередь добавления

&ProcessAddQueue;

пытаемся создать все учетные записи

&DisposeAddQueue;

записываем учетную запись либо в основную

tt базу данных, либо обратно в очередь, если

tt возникли какие-то проблемы

tt считываем очередь добавления в структуру данных $queue

sub ReadAddQueue{

open(ADD,Saccountdir.Saddqueue) or

die "Unable to open ".Saccountdir.$addqueue.":$!\n";

read(ADD, Squeuecontents, -s ADD);

close(ADD);

Squeue = XMLin("<queue>".Squeuecontents."</queue>",

keyattr => ["login"]);

ft обходим в цикле структуру данных, пытаясь создать учетную

запись для каждого запроса (т. е. для каждого ключа)

sub ProcessAddQueue{

foreach my Slogin (keys %{$queue->{account}}){

Sresult = &$accountadd($login,

$queue->{account}->{$login});

if (!$result){

$queue->{account}->{$login}{status} = "created";

}

else {

$queue->{account}->{$login}{status} =

"error:$result";

}

}

}

ft теперь снова обходим структуру данных. Каждую учетную запись

# со статусом "created," добавляем в основную базу данных. Все

и остальные записываем обратно в файл очереди, перезаписывая

tt все его содержимое.

sub DisposeAddQueue{

foreach my Slogin (keys %{$queue->{account}}){

if ($queue->{account}->{$login}{status} eq "created")!

$queue->{account}->{$login}{login} = Slogin;

$queue->{account}->{$login}{creation_date} = time;

&AppendAccountXML($accountdir.$maindata,

$queue->{account}->{$login});

delete $queue->{account}->{$login};

next;

}

}

# To, что осталось сейчас в Squeue, - это учетные записи,




- Начало -  - Назад -  - Вперед -



Книжный магазин