in reply to Parsing Zonefiles
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
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Parsing Zonefiles
by Elijah_A (Novice) on Aug 06, 2004 at 02:43 UTC |
In Section
Seekers of Perl Wisdom