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



Файлы узлов - часть 11


$outputfile:$!\n";

print OUTPUT "»\n\# host file - GENERATED BY $0\n

tt DO NOT EDIT BY HAND! \nft\n"; print OUTPUT "

Converted by $user on ".scalar(localtime)."\nfl\n";

foreach my $dept (keys %depts) {

print OUTPUT "tt number of hosts in the $dept department:

$depts{$dept}.\n"; }

print OUTPUT "tt total number of hosts: ".scalar(keys %entries)."\ne\n\n";

обходим в цикле все узлы и выводим комментарий tt вместе с самой записью

foreach my Sentry (sort byaddress keys %entries) { print OUTPUT

"# Owned by ",$entries{$entry}->{owner},"

 (", $entries{$entry}->{department},"): ",

$entries{$entry}->{building},"/".

Sentries{$entry}->{room},"\n";

print OUTPUT

$entries{$entry}->{address},"\t", $entries{$entry}->{name},"

 ", Sentries{$entry}->{aliases},"\n\n"; }

Close(OUTPUT);

use Res;

 путь к RCS

Rcs->bindir(Vusr/local/bin1);

создаем новый RCS-объект

my $rcsobj = Rcs->new;

ft передаем ему имя получаемого файла

$rcsobj->file($target);

tt получаем его из репозитория RCS (он уже должен быть там)

$rcsobj->co('-!');

ft переименовываем вновь созданный файл

rename($outputfile,$target) or

die "Невозможно переименовать Soutputfile в $target:$!\n";

помещаем его в репозиторий RCS

$rcsobj->ci("-u","-m"."Converted by $user on ".scalar(localtime));

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

Взглянув на фрагмент записей из rlog hosts, можно понять, как действует программа:

revision 1.5

date: 1998/05/19 23:34:16; author: dnb; state: Exp; lines: +1 -1

Converted by David N. Blank-Edelman (dnb) on Tue May 19 19:34:16 1998

revision 1.4

date: 1998/05/19 23:34:05; author: eviltwin; state: Exp; lines: +1 -1

Converted by Divad Knalb-Namlede (eviltwin) on Tue May 19 19:34:05 1998

revision 1.3

date: 1998/05/19 23:33:35; author: dnb; state: Exp; lines: +20 -0

Converted by David N. Blank-Edelman (dnb) on Tue May 19 19:33:16 1998

Из предыдущего примера видно, что между версиями файла нет больших различий (обратите внимание на часть, включающую lines:), зато отслеживаются все изменения, происходящие при создании файла. При необходимости узнать, что именно произошло, достаточно воспользоваться командой rcsdiff. В крайнем случае, всегда можно вернуться к предыдущим версиям, если какие-либо изменения приведут сеть в неработоспособное состояние.




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