Как вызвать сохранение файла зоны из 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 минут. В моих целях я могу взять резервную копию файла журнала, поскольку причина, по которой я хотел, чтобы отраженные изменения были в состоянии запускать именованные (после сбоя) и иметь на месте новейшие записи.