用于解析绑定区域文件的任何python库?

时间:2008-10-25 19:12:34

标签: python bind

用于解析绑定区域文件的任何python库? 基本上有助于添加/删除区域和记录的东西。 即使有人手动修改区域文件,这也需要工作,因此每次都不能覆盖区域文件。

5 个答案:

答案 0 :(得分:6)

easyzone是一个比dnspython好的图层

Zoner提供了一个用于编辑区域文件的Web界面,并使用了easyzone。

答案 1 :(得分: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

答案 2 :(得分:1)

我知道这是旧的,但我唯一能找到的工作就叫做iscpy。你可以做一个easy_install。

easy_install iscpy

然后在python:

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

返回字典。

答案 3 :(得分:0)

见上面关于bicop的回答。

另外,http://pypi.python.org/pypi的Python包索引是查找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')

您可以使用简单的代码片段尽可能地获得所需。

答案 4 :(得分:0)

您可以尝试bicop,“python库来处理ISC绑定样式配置文件”。