【问题标题】:Any python libs for parsing Bind zone files?任何用于解析绑定区域文件的 python 库?
【发布时间】:2008-10-25 19:12:33
【问题描述】:

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

【问题讨论】:

    标签: python bind


    【解决方案1】:

    easyzone 是 dnspython 上的一个很好的层

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

    【讨论】:

      【解决方案2】:

      我无法将 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

      【讨论】:

      • Bind 使用两种不同的配置文件格式——一种用于其服务器配置(例如 /etc/named.conf),另一种用于区域文件(例如 /var/named/localhost.zone)。这些工具处理配置文件,而您正在谈论区域文件。
      【解决方案3】:

      请参阅上面有关 bicop 的答案。

      顺便说一句,http://pypi.python.org/pypi 的 Python 包索引是查找 Python 包的好地方。

      编辑:以下内容可能对试图弄清楚简单解析的人仍然有帮助,但 bicop 显然是一个现有的解决方案。

      如果有人手动修改了配置,而您又不想覆盖它,这是否意味着您希望从现有配置中插入/删除行,而使所有 cmets 等保持不变?这确实会阻止解析然后重新输出配置,但这也是一个积极的方面——您不需要完全解析文件来实现您的目标。

      要添加记录,您可以尝试一种简单的方法,例如

      # 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')
      

      您可以使用像这样的简单 sn-ps 代码尽可能多地完成。

      【讨论】:

      • 请参阅下面关于 bicop 的回答。也许您应该使用 google(这是“在 python 中绑定配置文件”的第二次点击),而不是 pypi 的搜索界面不足:)。
      • 我用谷歌搜索过,但还是错过了。我想我试过“绑定python解析”。我会更新我的回复。
      【解决方案4】:

      我知道这是旧的,但我能找到的唯一有效的是 iscpy。你可以做一个easy_install。

      easy_install iscpy
      

      然后在python中:

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

      返回字典。

      【讨论】:

      • 据我所知iscpy 不支持解析区域文件,只支持 BIND 配置文件。该问题专门调出区域文件。
      【解决方案5】:

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

      【讨论】:

      • 这是否支持 daniels 保留手动修改的要求?
      • 据我所知bicop 不支持解析区域文件,只支持 BIND 配置文件。该问题专门调出区域文件。
      • 山姆哈里斯是正确的。绑定配置文件与 DNS 区域文件不同。请删除此答案,因为它具有误导性且离题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 2012-10-25
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多