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



         

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


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

  • Считываем файл базы данных в хэш хэшей, проверяя при этом данные.
  • Генерируем заголовок.
  • Записываем данные в файл для прямого преобразования (из имен в IP-адреса) и помещаем его под контроль RCS.
  • Записываем данные в файл для обратного преобразования (из 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} .




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