バインドゾーンファイルを解析するためのPythonライブラリはありますか?
質問
バインドゾーンファイルを解析するためのPythonライブラリはありますか? 基本的に、ゾーンとレコードの追加/削除に役立つもの。 これは、誰かがゾーンファイルを手動で変更した場合でも機能する必要があるため、毎回ゾーンファイルを上書きすることは解決策ではありません。
解決
次のような従来のゾーンファイルに対して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.
をご覧ください 他のヒント
これは古いことは知っていますが、動作するのはiscpyと呼ばれるものだけです。 easy_installを実行できます。
easy_install iscpy
次にPythonで:
import iscpy
iscpy.ParseISCString(open('somefile.conf', 'r').read())
辞書を返します。
bicop
、" a pythonライブラリを試すことができます。 ISCバインドスタイルの構成ファイルを処理します"。
bicopに関する上記の回答を参照してください。
さておき、 http://pypi.python.org/pypiはPythonパッケージを探すのに最適な場所です。
編集:単純な解析を理解しようとしている人にとっては以下はまだ役立つかもしれませんが、bicopは明らかに既存のソリューションです。
誰かが設定を手動で変更し、それを上書きしたくない場合、既存の設定から行を挿入/削除し、すべてのコメントなどをそのまま残したいということを意味しますか?解析を行ってから設定を再出力することはできませんが、それでも良いことです。目的を達成するためにファイルを完全に解析する必要はありません。
レコードを追加するには、次のような簡単なアプローチを試してください
# 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)
同様のコードは行を削除するために機能します:
# 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')
このようなコードの簡単なスニペットで必要な範囲で取得できます。
所属していません StackOverflow