Как вызвать сохранение файла зоны из dnspython после обновления

Я использую 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')

Это работает хорошо, за исключением того, что я хочу, чтобы изменения в файле зоны были записаны на диск. Кто-нибудь знает, как вызвать такое обновление?

Заранее спасибо.

2 ответа

Вы можете использовать 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 " % (dom, ret['err']))
else:  
  syslog.syslog(syslog.LOG_NOTICE, "Zone written to disk: %s" % dom)

Оказывается, привязка просто выплевывает файл зоны каждые 15 минут. В моих целях я могу взять резервную копию файла журнала, поскольку причина, по которой я хотел, чтобы отраженные изменения были в состоянии запускать именованные (после сбоя) и иметь на месте новейшие записи.

Другие вопросы по тегам