8 votes

Existe-t-il des librairies python pour analyser les fichiers de zone Bind ?

Existe-t-il des librairies python pour analyser les fichiers de zone Bind ? En gros, quelque chose qui aiderait à ajouter/supprimer des zones et des enregistrements. Cela doit fonctionner même si quelqu'un modifie le fichier de zone à la main, donc écraser les fichiers de zone à chaque fois n'est pas une solution.

7voto

bpbp Points 818

easyzone est une couche agréable au-dessus de dnspython

Zoner fournit une interface web pour éditer les fichiers de zone et utilise easyzone.

6voto

JCTechie Points 146

Je n'ai pas pu utiliser bicop pour les fichiers de zone classique comme ceux-ci :

    $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.

Je vais jeter un coup d'œil à dnspython

0voto

Michael Gundlach Points 10029

Voir la réponse ci-dessus concernant le bicop.

Par ailleurs, l'index des paquets Python à l'adresse suivante http://pypi.python.org/pypi est un endroit idéal pour rechercher des paquets Python.

EDITAR : Ce qui suit peut encore être utile à quelqu'un qui essaie de comprendre le parsing simple, mais bicop est apparemment une solution existante.

Si quelqu'un a modifié la configuration à la main, et que vous ne voulez pas l'écraser, cela implique-t-il que vous souhaitez insérer/supprimer des lignes d'une configuration existante, en laissant tous les commentaires etc. intacts ? Cela évite d'analyser puis de ré-écrire la configuration, mais c'est aussi un point positif : vous n'avez pas besoin d'analyser complètement le fichier pour atteindre votre objectif.

Pour ajouter un enregistrement, vous pouvez essayer une approche simple telle que

# 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)

Un code similaire fonctionne pour supprimer une ligne :

# 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')

Vous pouvez aller aussi loin que vous le souhaitez avec de simples bouts de code comme celui-ci.

0voto

jccnu619 Points 41

Je sais que c'est vieux mais le seul qui fonctionne que j'ai pu trouver s'appelle iscpy. Vous pouvez faire une installation facile.

easy_install iscpy

Puis en python :

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

qui renvoie un dictionnaire.

-1voto

Glyph Points 17756

Vous pouvez essayer bicop , "une bibliothèque python pour traiter les fichiers de configuration de type ISC bind".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X