代码之家  ›  专栏  ›  技术社区  ›  daniels

有分析绑定区域文件的python libs吗?

  •  6
  • daniels  · 技术社区  · 16 年前

    有分析绑定区域文件的python libs吗? 基本上是有助于添加/删除区域和记录的东西。 这需要工作,即使有人手工修改区域文件,所以每次都覆盖区域文件不是解决方案。

    5 回复  |  直到 7 年前
        1
  •  5
  •   Casimir et Hippolyte    11 年前

    我无法对以下经典区域文件使用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
  •  6
  •   Boden Garman    13 年前

    easyzone 是dnspython上的一个很好的层

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

        3
  •  1
  •   jccnu619    13 年前

    我知道这是旧的,但我能找到的唯一一个工作被称为iscpy。您可以轻松安装。

    easy_install iscpy
    

    然后在Python中:

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

    它返回一个字典。

        4
  •  0
  •   Glyph    16 年前

    你可以试试 bicop “用于处理ISC绑定样式配置文件的python库”。

        5
  •  0
  •   Michael Gundlach    16 年前

    请参阅上面关于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')
    

    使用这样简单的代码片段,您可以达到所需的程度。