【问题标题】:how to trigger a zone file save from dnspython after an update更新后如何从dnspython触发区域文件保存
【发布时间】:2013-05-14 13:39:25
【问题描述】:

我正在使用 dnspython 执行动态 DNS 更新,其语法类似于:

import dns.update, dns.query
update = dns.update.Update('zone', keyring=keyring)
update.add('source', 60, 'CNAME', 'destination')
response = dns.query.tcp(update, 'localhost')

这很好用,除了我希望将区域文件的更改写入磁盘。有谁知道如何触发这样的更新?

提前致谢。

【问题讨论】:

  • this page 上的“修改 DNS 区域文件”标题下有一个示例。
  • 是的,这就是我找到的同一页。不幸的是,它谈到了在使用 dns.zone 时这样做。我认为对于动态 DNS 更新,您应该使用 dns.update,但也许我将不得不接受使用 dns.zone 并自己增加序列号。

标签: python python-2.7 dnspython


【解决方案1】:

您可以使用 RNDC,使用 crontab - 但由于您使用的是 Python……这对我有用:

#!/usr/local/bin/python2.7

import syslog, isc

dom = 'domain.example'

r = isc.rndc(('127.0.0.1', 953), 'hmac-sha256', 'MjB5u4QLSlL5EGFtD/etc=')
ret = r.call('sync %s' % dom)
if ret['result'] != '0':
  syslog.syslog(syslog.LOG_ERR, "Error writing zone: %s %s" % (dom, ret['err']))
else:  
  syslog.syslog(syslog.LOG_NOTICE, "Zone written to disk: %s" % dom)

【讨论】:

  • 对于任何想了解兼容性的人:isc.rndc Python 模块已添加到 BIND 9.11.0 中,该模块于 2016 年 10 月 4 日发布:ftp.isc.org/isc/bind9/9.11.0
【解决方案2】:

原来 bind 只是每 15 分钟吐出一次区域文件。出于我的目的,我可以备份日志文件,因为我希望反映更改的原因是能够启动命名(在失败后)并拥有最新的记录。

【讨论】:

    猜你喜欢
    • 2022-11-20
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    相关资源
    最近更新 更多