Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Parsing Zonefiles

by fokat (Deacon)
on Aug 05, 2004 at 17:36 UTC ( #380335=note: print w/ replies, xml ) Need Help??


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


Comment on Re: Parsing Zonefiles
Download Code
Re^2: Parsing Zonefiles
by Elijah_A (Novice) on Aug 06, 2004 at 02:43 UTC
    Ah!! now I remember why I used a temporary file for the main zone file, It's for the DNS::Zone::File; ... didn't work out though.
    Hmmm... Net::DNS::ZoneFile might just be what I'm looking for... I tried executing it till the print part, but didn't get any results.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://380335]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (13)
As of 2014-10-02 13:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    What is your favourite meta-syntactic variable name?














    Results (58 votes), past polls