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


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


if ($queue->{account}->{Slogin}{status} eq "deleted"){

unless (exists $maindb->{account}->{$login}){

warn "Could not find Slogin in $maindata\n";

next;

}

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

$maindb->{account}->{$login}{deletion_date} = time;

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

next;

}

&WriteMainDatabase;

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

# которые нельзя удалить

open(DEL,">".$accountdir.$delqueue) or die "Unable to open ".

$accountdir.$delqueue.":$!\n";

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

print DEL XMLout(&TransformForWrite($queue), rootname => undef);

}

close(DEL); }

sub ReadMainDatabase{

open(MAIN,$accountdir.$maindata) or

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

read (MAIN, $dbcontents, -s MAIN);

close(MAIN); $maindb = XMLin("<maindb>".Sdbcontents. "</maindb>",

keyattr => ["login"]); }

sub WriteMainDatabase{

# замечание: было бы «гораздо безопаснее* записывать данные

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

# успешно, записывать их окончательно open(MAIN,">".

$accountdir.Smaindata) or

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

print MAIN XMLout(&TransformForWrite($maindb),

rootname => undef); close(MAIN); }

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




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



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