#! /usr/bin/env python # create-zone version 1.1 # A python2 program # Copyright 2002, Kjell Enblom # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Skapa zonfiler för bakåtuppslagning av lokala IP-adresser import os, string, sys, re # Zon-fil för bakåtuppslagningen för 192.168.x.y respektive 172.16.x.y - 172.31.x.y blackhole="/var/named/blackhole.zone" # Zon-fil för bakåtuppslagningen för 10.x.y.z ten="/var/named/ten.zone" # Domännamn för den domän bakåtuppslagningen ska slå upp till. domain="localdomain." foo=os.popen("dnsdomainname") domainname=foo.readline() foo=os.popen("host -t NS `dnsdomainname` | grep \"`dnsdomainname`[ ]*$\"") bar=foo.readline() if bar == '': if domainname == '': print "Kan inte slå upp domännamn för din dator." print "Har du satt ett domännamn?" else: print "Kan inte slå upp nameserver (NS) för domänen: " + domainname sys.exit(1) else: NS=re.search("^.*name server ([^\n]*)",bar).group(1) print "Ska jag skapa en zonfil för 192.168.x.y respektive 172.16.x.y - 172.31.x.y (J/n) ", try: reply = sys.stdin.readline() except KeyboardInterrupt: sys.exit(1) if reply == "j\n" or reply == "J\n" or reply == "\n": print "Zonfil (default: " + blackhole + "): ", reply = sys.stdin.readline() if reply == "\n": file = blackhole else: file = re.search("^([^\n]*)",reply).group(1) print "Det här kommer att ta ett litet ögonblick." try: f = open(file, "w") f.write("$TTL 1D\n") f.write("@ 1D IN SOA local. root.local. (\n") f.write(" 2002010100 ; serial\n") f.write(" 3H ; refresh\n") f.write(" 1H ; retry\n") f.write(" 1W ; expiry\n") f.write(" 1D ) ; minimum\n") f.write(" IN NS "+NS+"\n") for i in range(0,256): print "Skapar nu foo-" + `i` + ".0-255."+domain for j in range(0,256): f.write(`j`+"."+`i`+" IN PTR foo-"+`i`+"."+`j`+"."+domain+"\n") f.close() except IOError,fel: print print "FEL!!! Kan inte skriva till filen: " + file print "Är du säker på att du har skrivrättigheter och att disken inte är full?" sys.exit(1) print "" print "Skriv nu in följande i filen /etc/named.conf" print "" for i in range(16,32): print "zone \"" + `i` + ".172.in-addr.arpa\" { type master; file \""+ file + "\"; };" print "zone \"168.192.in-addr.arpa\" { type master; file \"" + file + "\"; };" print print print "Ska jag skapa en zonfil för 10.x.y.z (OBS! över 750 Mbyte stor.) (J/n) ", try: reply = sys.stdin.readline() except KeyboardInterrupt: sys.exit(1) if reply == "j\n" or reply == "J\n" or reply == "\n": print "Zonfil (default: " + ten + "): ", reply = sys.stdin.readline() if reply == "\n": file = ten else: file = re.search("^([^\n]*)",reply).group(1) print "Det här kommer att ta en god stund. Ta en fikapaus och återkom." try: f = open(file, "w") f.write("$TTL 1D\n") f.write("@ 1D IN SOA local. root.local. (\n") f.write(" 2002010100 ; serial\n") f.write(" 3H ; refresh\n") f.write(" 1H ; retry\n") f.write(" 1W ; expiry\n") f.write(" 1D ) ; minimum\n") f.write(" IN NS "+NS+"\n") for i in range(0,256): print "Skapar nu bar-" + `i` + ".x.y."+domain for j in range(0,256): for k in range(0,256): f.write(`k`+"."+`j`+"."+`i`+" IN PTR bar-"+`i`+"."+`j`+"."+`k`+"."+domain+"\n") f.close() except IOError,fel: print print "FEL!!! Kan inte skriva till filen: " + file print "Är du säker på att du har skrivrättigheter och att disken inte är full?" sys.exit(1) print "" print "Skriv nu in följande i filen /etc/named.conf" print "" print "zone \"10.in-addr.arpa\" { type master; file \"" + file + "\"; };"