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
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
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.
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
Ich habe es googeln und habe es trotzdem vermisst. Ich glaube, ich habe versucht "bind python parse". Ich werde meine Antwort aktualisieren. –
Sie könnten versuchen bicop
, "eine Python-Bibliothek, um ISC-Bindungs-Stil-Konfigurationsdateien zu verarbeiten".
Unterstützt dies die Forderung von Daniels, dass Änderungen von Hand beibehalten werden? –
Von was ich sagen kann 'bicop' unterstützt nicht die Analyse von Zonendateien, nur die BIND-Konfigurationsdateien. Die Frage ruft gezielt Zonendateien auf. –
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
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.
Von dem, was ich sagen kann 'iscpy' unterstützt nicht die Analyse von Zonendateien, nur die BIND-Konfigurationsdateien. Die Frage ruft gezielt Zonendateien auf. –
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