BEGIN{ ##### fill this in before you start! ##### domainname="ampr.org"; nameserver="pe1rph"; print "----------------------------------"; print "Host name file converter by PE1RPH"; print "Eddy van Oosterbosch. "; print "Contact: pe1rph.ampr.org "; print " root@pe1rph.demon.nl "; print "----------------------------------"; print " Pre: /etc/hosts"; print " Post:named files"; print " usage: cat /etc/hosts | gawk -f named.gawk"; print " fill in the nameserver and hostname before you start!"; #Field seperator FS=" "; oldnet=0; ##### filenamerev=""; ##### create header for forward domain file ##### filenamefwd=domainname; print "Creating domain file:"filename; #and print header for file oldnet=ipnr[3]; print "@ IN SOA "nameserver"."domainname". root."nameserver"."domainname". (" > filenamefwd; print " 1 ; Serial" >> filenamefwd; print " 8H ; Refresh" >> filenamefwd; print " 2H ; Retry" >> filenamefwd; print " 1W ; Expire" >> filenamefwd; print " 1D) ; Minimum TTL" >> filenamefwd; print " NS "nameserver"."domainname"." >> filenamefwd; print >> filenamefwd; #create named.conf file print "// Config file for "domainname"." > "named.conf"; print "// automagicly generated by Eddy van Oosterbosch's script" >> "named.conf"; print "\n options { directory \"/var/named\";" >> "named.conf"; print >> "named.conf"; print " };" >> "named.conf"; print " zone \".\" {" >> "named.conf"; print " type hits;" >> "named.conf"; print " file \"root.hints\"; // move this file and replace it with" >> "named.conf"; print " //an empty one when off-line" >> "named.conf"; print " };" >> "named.conf"; } /^[0-9]*.[0-9]*.[0-9]*.[0-9]/ { #this looks like an ip number, process it split($1,ipnr,"."); #put ip number in array hostname=$2; #2nd word is hostname gsub("."domainname,"",hostname); #only hostname, remove domain name gsub("_","-",hostname); #replace _ in hostname with - # print "hostname:"hostname; #debug stuff filenamerev=ipnr[1]"."ipnr[2]"."ipnr[3]; if(ipnr[3]!=oldnet) {if(system("ls " filenamerev)) #new subnet number, put it in a new reverse file {print "Creating reverse domain file:" filename; #and print header for file # add forward domain in config file print " zone \""ipnr[3] "." ipnr[2] "." ipnr[1] ".in-addr.arpa" "\" {" >> "named.conf"; print " type master;" >> "named.conf"; print " file \"pz/"filenamerev"\";" >> "named.conf"; print " };" >> "named.conf"; oldnet=ipnr[3]; print "@ IN SOA "nameserver"."domainname". root@"nameserver"."domainname" (" > filenamerev; print " 1 ; Serial" >> filenamerev; print " 8H ; Refresh" >> filenamerev; print " 2H ; Retry" >> filenamerev; print " 1W ; Expire" >> filenamerev; print " 1D) ; Minimum TTL" >> filenamerev; print " NS "nameserver"."domainname"." >> filenamerev; print "\n" >> filenamerev; } } ##### create output for forward domain file ##### lhostname= int(length(hostname)/8); #print "hostnamelength=(" hostname ")" lhostname; outstrfwd=hostname; for(i=1;i<=(2-lhostname);i++)outstrfwd=outstrfwd " "; # add tabs to allign it nicely print outstrfwd " A " ipnr[1] "." ipnr[2] "." ipnr[3] "." ipnr[4] >> filenamefwd; #print outstrfwd " A " ipnr[1] "." ipnr[2] "." ipnr[3] "." ipnr[4]; ##### creat outoput for reverse domain files ##### ##### each subnet has a net reverse domain file ##### print ipnr[4] " PTR " hostname"."domainname"." >> filenamerev; #print ipnr[4] " PTR " hostname"."domainname"."; } END{ print " zone \""domainname"\"{" >> "named.conf"; print " notify no;" >> "named.conf"; print " type master;" >> "named.conf"; print " file \"pz/"domainname"\";" >> "named.conf"; print " };" >> "named.conf"; print "Done!"; print "Move the forward and reverse domain name files to /var/named/pz/ ."; print "Move the named.conf to /etc"; print "Don't forget to put this in your /etc/resolv.conf:"; print "search "domainname" other.domain etc.etc"; print "nameserver ip-number-of("nameserver")"; print ; print "Happy DNS-ing!"; print "73, PE1RPH"; }