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
In reply to Re: Parsing Zonefiles
by fokat
in thread Parsing Zonefiles
by Elijah_A
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |