Hi there:
I don't know if you did look at it, but Net::DNS::ZoneFile will parse most BIND zone files, returning a list of Net::DNS::RR objects as the result.
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:
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;
Feel free to ask if you need further help with this code...
Best regards
-lem, but some call me fokat
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|