有没有Python库可以解析Bind区域文件?

8 投票
4 回答
16304 浏览
提问于 2025-04-11 09:36

有没有什么Python库可以用来解析Bind区域文件?

简单来说,就是想找个工具,能帮助我们添加或删除区域和记录。

这个工具需要能够处理手动修改过的区域文件,所以每次都覆盖区域文件的方法行不通。

4 个回答

0

请查看上面的关于bicop的回答。

顺便提一下,Python包索引网站 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')

你可能只需要用这样简单的代码片段就能达到你的目的。

7

easyzone 是一个很不错的工具,它在 dnspython 的基础上进行了简化。

Zoner 提供了一个网页界面,可以用来编辑区域文件,并且它是基于 easyzone 开发的。

6

我无法使用 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

撰写回答