バインド ゾーン ファイルを解析するための Python ライブラリはありますか? 基本的に、ゾーンとレコードの追加/削除に役立つものです。これは、誰かが手動でゾーン ファイルを変更した場合でも機能する必要があるため、毎回ゾーン ファイルを上書きすることは解決策ではありません。
5 に答える
次のような従来のゾーン ファイルには 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.
dnspythonを見てみましょう
上記の bicop に関する回答を参照してください。
余談ですが、 http://pypi.python.org/pypiの Python Package Indexは、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')
このようなコードの単純なスニペットで、必要なだけ取得できます。
これが古いことは知っていますが、私が見つけた唯一の動作するものは iscpy と呼ばれるものです。easy_install を実行できます。
easy_install iscpy
次に、Pythonで:
import iscpy
iscpy.ParseISCString(open('somefile.conf', 'r').read())
辞書を返します。
bicop
「ISC バインド スタイルの構成ファイルを処理するための Python ライブラリ」を試すことができます。