note
fokat
<P>Hi there:</P>
<P>I don't know if you did look at it, but [cpan://Net::DNS::ZoneFile] will parse most BIND zone files, returning a list of <tt>Net::DNS::RR</tt> objects as the result.</P>
<P>You can then act on the objects themselves, remove them from the list or add new ones. Finally, you can simply print them to a new file. The pseudo-code would look like:</P>
<CODE>
use Net::DNS;
use Net::DNS::ZoneFile;
my $rrs = Net::DNS::ZoneFile->read("/var/named/named.local",
{
# You might need to set the
# $ORIGIN explicitly here if
# your zone file does not make
# this explicit. See perldoc
}
);
# Print the RRs that were fetched
print $_->string, "\n" for @$rrs;
# Add a sample RR
push @$rrs, new Net::DNS::RR "3 7200 IN PTR always-listed.your.domain.";
# Update the serial :)
# You can also "replace" the current serial, with the current date,
# as commonly recommended. However, if you're looking into this, you
# probably have better change control on your zones already.
foreach (@$rrs)
{
next unless $_->type eq 'SOA' and $_->class eq 'IN';
$_->serial($_->serial + 1);
}
# Print the resulting RR set (this could be your new zone by printing to
# a file)
print $_->string, "\n" for @$rrs;
</CODE>
<P>Feel free to ask if you need further help with this code...</P>
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-107541">
<P>Best regards</P>
<P>-<A HREF="http://mipagina.cantv.net/lem/">lem</A>, but some call me fokat
</div></div>
380193
380193