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


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


# которые невозможно создать

# перезаписываем файл очереди

open(ADD,">".$accountdir.$addqueue) or

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

П если есть учетные записи, которые не были созданы,

# записываем их

if (scalar keys %{$queue->{account}}){

print ADD XMLout(&TransformForWrite($queue),

rootname => undef);

}

close(ADD);

}

Сценарий, обрабатывающий очередь удаления, очень похож:

use Account;

use XML::Simple;

SlnitAccount;

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

&ReadDelOueue;

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

&ProcessDelQueue;

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

&DisposeDelQueue;

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

базы данных, либо записываем ее обратно в

в очередь, если возникли какие-то проблемы

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

sub ReadDelQueue{

open(DEL,Saccountdir.Sdelqueue) or

die "Unable to open ${accountdir}${delqueue}:$!\n";

read(OEL, Squeuecontents, -s DEL);

close(DEL);

Squeue = XMLin("<queue>".$queuecontents."</queue>",

keyattr => ["login"]);

}

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

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

sub ProcessDelQueue{

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

Sresult = &$accountdel($login,

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

if (!$result){

Squeue->{account}->{$login}{status} = "deleted";

}

else {

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

"error:$result";

}

>

}

# считываем основную базу данных и затем вновь обходим в цикле

 структуру Squeue. Для каждой учетной записи со статусом

 "deleted," изменяем информацию в основной базе данных. Затем

 записываем в базу данных. Все, что нельзя удалить, помещаем

# обратно в файл очереди удаления. Файл перезаписывается,

sub DisposeDelQueue{

&ReadMainDatabase;

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




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



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