2008-10-25 7 views
6

Qualsiasi lib di pitone per l'analisi dei file di zona Bind? Fondamentalmente qualcosa che aiuti ad aggiungere/rimuovere zone e record. Questo deve funzionare anche se qualcuno modifica manualmente il file di zona, quindi sovrascrivere i file di zona ogni volta non è una soluzione.Qualsiasi lib di pitone per l'analisi dei file di zona Bind?

risposta

5

sono stato in grado di utilizzare bicop per i file di zona classici come questi:

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

avrò uno sguardo al dnspython

+2

Bind utilizza due diversi formati di file di configurazione: uno per la configurazione del server (ad esempio /etc/named.conf) e l'altro per i file di zona (ad esempio /var/named/localhost.zone). Questi strumenti riguardano i file di configurazione, mentre si parla di file di zona. – tylerl

0

Vedere risposta sopra a proposito di bicop.

Per inciso, il pacchetto Indice Python in http://pypi.python.org/pypi è un ottimo posto per cercare i pacchetti Python.

EDIT: Il seguente può ancora essere utile a qualcuno che cerca di capire un semplice parsing, ma bicop è apparentemente una soluzione esistente.

Se qualcuno ha modificato la configurazione a mano e non si desidera sovrascriverla, ciò implica che si desidera inserire/rimuovere linee da una configurazione esistente, lasciando intatti tutti i commenti ecc.? Ciò impedisce l'analisi e quindi ri-outputting della configurazione, ma anche questo è positivo: non è necessario analizzare completamente il file per raggiungere l'obiettivo.

Per aggiungere un record, si potrebbe provare un approccio semplice come

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

codice simile funziona per la rimozione di una linea:

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

si può ottenere, per quanto è necessario, con semplici frammenti di codice come questo.

+0

Vedere la mia risposta qui sotto su bicop. Forse dovresti usare google (è il secondo hit per "bind config file in python") piuttosto che l'interfaccia di ricerca carente di pypi :). – Glyph

+0

Ho fatto google e sono riuscito a mancarlo comunque. Penso di aver provato "bind python parse". Aggiornerò la mia risposta –

0

Si potrebbe provare bicop "una libreria Python per elaborare i file di configurazione si legano in stile ISC".

+0

Questo supporterà la richiesta di Daniels di conservare le modifiche a mano? –

+2

Da quello che posso dire che 'bicop' non supporta l'analisi dei file di zona, solo i file di configurazione BIND. La domanda richiama specificamente i file di zona. –

+0

Sam Harris è corretto. Un file di configurazione Bind non è uguale a un file di zona DNS. Si prega di cancellare questa risposta, in quanto è fuorviante e off-topic. – Cerin

1

So che questo è vecchio ma quello lavorando solo ho potuto trovare è chiamato iscpy. Puoi fare un easy_install.

easy_install iscpy 

Poi in python:

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

che restituisce un dizionario.

+2

Da quello che posso dire 'iscpy' non supporta l'analisi dei file di zona, solo i file di configurazione BIND. La domanda richiama specificamente i file di zona. –

6

easyzone è un bel strato sopra dnspython

Zoner fornisce un'interfaccia web per i file di zona di editing e si avvale di easyzone.