2008-10-25 12 views
6

Alle Python-Bibliotheken zum Analysieren von Bind-Zonendateien? Grundsätzlich etwas, das beim Hinzufügen/Entfernen von Zonen und Datensätzen hilft. Dies muss funktionieren, auch wenn jemand die Zonendatei von Hand ändert, so dass das Überschreiben der Zonendateien jedes Mal keine Lösung ist.Alle Python-Bibliotheken zum Analysieren von Bind-Zonendateien?

Antwort

5

Ich konnte nicht für klassische Zonendateien wie diese verwenden bicop:

$TTL 86400 
@ IN SOA ns1.first-ns.de. postmaster.robot.first-ns.de. (
    2006040800 ; serial 
    14400  ; refresh 
    1800   ; retry 
    604800  ; expire 
    86400)  ; minimum 

@ 

        IN NS  ns1.first-ns.de. 

ich einen Blick auf dnspython

+2

Bind verwendet zwei verschiedene Konfigurationsdateiformate - eines für die Serverkonfiguration (z. B. /etc/named.conf) und das andere für die Zonendateien (z. B. /var/named/localhost.zone). Diese Tools adressieren Konfigurationsdateien, während Sie über Zonendateien sprechen. – tylerl

0

Siehe Antwort oben über Bicop.

Nebenbei ist der Python Package Index unter http://pypi.python.org/pypi ein großartiger Ort, um nach Python-Paketen zu suchen.

EDIT: Die unten kann immer noch hilfreich für jemanden sein, der versucht, einfache Parsing herauszufinden, aber Bicop ist anscheinend eine bestehende Lösung.

Wenn jemand die Konfiguration von Hand geändert hat und Sie sie nicht überschreiben wollen, bedeutet das, dass Sie Zeilen aus einer bestehenden Konfiguration einfügen/entfernen wollen, alle Kommentare intakt lassen? Das verhindert das Parsen und das erneute Ausgeben der Konfiguration, aber das ist auch positiv - Sie müssen die Datei nicht vollständig analysieren, um Ihr Ziel zu erreichen.

einen Datensatz hinzufügen, können Sie einen einfachen Ansatz versuchen, wie

# define zone_you_care_about and line_you_wish_to_insert first, then: 
for line in bindfile.read(): 
    out.write(line + '\n') 
    if ('zone "%s" in' % zone_you_care_about) in line: 
     out.write(line_you_wish_to_insert) 

ähnlicher Code funktioniert eine Linie zum Entfernen von:

# define zone_you_care_about and relevant_text_to_remove, then: 
for line in bindfile.read(): 
    if not relevant_text_to_remove in line: 
     out.write(line + '\n') 

Sie erhalten können, so weit Sie müssen mit einfachen Schnipseln Code wie folgt.

+0

Siehe meine Antwort unten über Bicop. Vielleicht solltest du google verwenden (es ist der zweite Treffer für "bind config file in python") anstatt pypis defizitärer Suchoberfläche :). – Glyph

+0

Ich habe es googeln und habe es trotzdem vermisst. Ich glaube, ich habe versucht "bind python parse". Ich werde meine Antwort aktualisieren. –

0

Sie könnten versuchen bicop, "eine Python-Bibliothek, um ISC-Bindungs-Stil-Konfigurationsdateien zu verarbeiten".

+0

Unterstützt dies die Forderung von Daniels, dass Änderungen von Hand beibehalten werden? –

+2

Von was ich sagen kann 'bicop' unterstützt nicht die Analyse von Zonendateien, nur die BIND-Konfigurationsdateien. Die Frage ruft gezielt Zonendateien auf. –

+0

Sam Harris hat Recht. Eine Bindungskonfigurationsdatei ist nicht mit einer DNS-Zonendatei identisch. Bitte löschen Sie diese Antwort, da sie irreführend und nicht am Thema ist. – Cerin

1

haben Ich weiß, das ist alt, aber die einzige Arbeit, die ich finden konnte, heißt iscpy. Sie können eine easy_install machen.

easy_install iscpy 

Dann in Python:

import iscpy 
iscpy.ParseISCString(open('somefile.conf', 'r').read()) 

die ein Dictionary zurückgibt.

+2

Von dem, was ich sagen kann 'iscpy' unterstützt nicht die Analyse von Zonendateien, nur die BIND-Konfigurationsdateien. Die Frage ruft gezielt Zonendateien auf. –

6

easyzone ist eine schöne Schicht über dnspython

Zoner eine Zone Dateien Web-Interface für die Bearbeitung bietet und die Verwendung von easyzone macht.