【发布时间】:2008-10-25 19:12:33
【问题描述】:
任何用于解析绑定区域文件的 python 库? 基本上可以帮助添加/删除区域和记录。 即使有人手动修改区域文件,这也需要工作,因此每次都覆盖区域文件不是解决方案。
【问题讨论】:
任何用于解析绑定区域文件的 python 库? 基本上可以帮助添加/删除区域和记录。 即使有人手动修改区域文件,这也需要工作,因此每次都覆盖区域文件不是解决方案。
【问题讨论】:
我无法将 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 包索引是查找 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 代码尽可能多地完成。
【讨论】:
我知道这是旧的,但我能找到的唯一有效的是 iscpy。你可以做一个easy_install。
easy_install iscpy
然后在python中:
import iscpy
iscpy.ParseISCString(open('somefile.conf', 'r').read())
返回字典。
【讨论】:
iscpy 不支持解析区域文件,只支持 BIND 配置文件。该问题专门调出区域文件。
您可以尝试bicop,“处理 ISC 绑定样式配置文件的 python 库”。
【讨论】:
bicop 不支持解析区域文件,只支持 BIND 配置文件。该问题专门调出区域文件。