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


Служба доменных имен (DNS) - часть 6


Вот, вкратце, что мы делаем:

  1. Считываем файл базы данных в хэш хэшей, проверяя при этом данные.
  2. Генерируем заголовок.
  3. Записываем данные в файл для прямого преобразования (из имен в IP-адреса) и помещаем его под контроль RCS.
  4. Записываем данные в файл для обратного преобразования (из IP-адресов в имена) и помещаем его под контроль RCS.

Вот как выглядит пример и получаемые в результате файлы:

use Res;

Sdatafile = "./database";

база данных узлов

Soutputfile = "zone.$$";

временный файл для вывода

$target = "zone.db";

получаемый файл

$revtarget = "rev.db";

получаемый файл для обратного преобразования

$defzone = ".oog.org";

# создаваемая по умолчанию зона

Srecordsep = "-=-\n";

 получаем текущую дату в формате YYYYMMDD

@localtime = localtime;

$today = sprintf("%04d%02d%02d",$localtime[5]+1900,

$localtime[4]+l,

$localtime[3]);

 имя пользователя, как в NT/2000, так и

Unix $user = ($"0 eq "MSWin32")? $ENV{USERNAME} :

(getpwuid($<))[6]." (".(getpwuid($<))[0].")"; $/ = Srecordsep;

 считываем файл базы данных

open(DATA, Sdatafile) or die "Ошибка! Невозможно открыть datafile;$!\n";

while (<DATA>) {

chomp; # удаляем разделитель записей

 разбиваем на key!,value"! @record = split /:\s*|\n/m;

$record ={}; # создаем ссылку на пустой хэш

%{$record} = @record;

# заполняем его значениями из ©record

в ищем ошибки в именах узлов

if ($record->{name} =" /["-.a-zA-ZO-9]/) {

warn "!!!! ",$record->{name} .

встретились недопустимые в именах узлов символы, пропускаем.. Дп";

next; }

# ищем ошибки в псевдонимах

if ($record->{aliases} =" /["-.a-zA-ZO-9\s]/) {

warn "!!!! " . $record->{name} .

встретились недопустимые в псевдонимах символы, пропускаем.. .\п";

next; }

# ищем пропущенные адреса unless ($record->{address}) {

warn "!!!! " . $record->{name} .




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



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