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



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


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

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

Так как эти файлы по-прежнему остаются частью повседневного администрирования, рассмотрим способы их поддержки. Perl и файлы узлов просто созданы друг для друга, если вспомнить предрасположенность Perl к обработке текста. Принимая во внимание их схожесть, будем использовать простой файл узлов в качестве плацдарма для ряда исследований.

Обратите внимание на то, что анализ файлов узлов может быть очень простым:

open(HOSTS, "/etc/hosts") or die

"Невозможно открыть файл узлов:$'\п":

while (defined ($_ = <HOSTS>)) {

next if";

# пропускаем строки, являющиеся комментариями next if /"$/;

пропускаем пустые строки

удаляем комментарии и

предваряющие их пробелы ($ip, @names) = split;

die "IP-адрес Sip уже встречался!\п"

if (exists $addrs{$ip}); $addrs{$ip) = [@names]; for (@narnes){

die "Имя узла $_ уже встречалось!\п" if (exists $names{$_});

$names{$J = $ip;

}

}

close(HOSTS);

В этом примере просматривался файл /etc/hosts (пропускались пустые строки и комментарии) и были созданы две структуры данных для дальнейшего использования. Первая структура данных - это хэш списков имен узлов, ключами которого являются IP-адреса. Вот как будет выглядеть такая структура данных для рассмотренного файла узлов:

$addrs{'127.0.0.1'} = ['localhost'];

$addrs{'192.168.1.2 } = [ rivendell.oog.org'.'rivencell']:

$addrs{'192.168.1.1'} = ['everest.oog,org'.'everes:']:

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

$narres! 'localhost' ;='127.0.0.




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