Nano Hash - криптовалюты, майнинг, программирование

Могу ли я написать файл зоны DNS с $TTL, используя dnspython?

Я использую dns.zone.Zone из dnspython для представления зон DNS, и когда я использую метод to_text(), я получаю зону, которая выглядит так:

@ 86400 IN SOA dns0.noris.net. hostmaster.noris.net. 1234 86400 1800 2419200 600
@ 86400 IN A 185.199.108.153
@ 86400 IN A 185.199.109.153
@ 86400 IN A 185.199.110.153
@ 86400 IN A 185.199.111.153

Есть ли способ заставить выходные данные использовать TTL по умолчанию в стиле BIND вместо одного TTL на запись, как это?

$TTL 86400
@ IN SOA dns0.noris.net. hostmaster.noris.net. 1234 86400 1800 2419200 600
@ IN A 185.199.108.153
@ IN A 185.199.109.153
@ IN A 185.199.110.153
@ IN A 185.199.111.153

(предыстория: я хочу свести к минимуму различия при изменении TTL зоны по умолчанию).

04.11.2020

Ответы:


1

dnspython по состоянию на v2.1.0rc1 (последняя версия на 9 ноября 2020 г.) не поддерживает этот тип стиля зоны сам по себе. Спускаемся по трассировке стека для вызова to_text():

  1. dns/zone.py#622: to_text()
  2. dns/zone.py#586: to_file()
  3. dns/node.py#53: to_text()
  4. dns/rdataset.py#233: to_text()

— здесь происходит фактическое форматирование:

for rd in self:
    extra = ''
    if want_comments:
        if rd.rdcomment:
            extra = f' ;{rd.rdcomment}'
        s.write('%s%s%d %s %s %s%s\n' %
                (ntext, pad, self.ttl, dns.rdataclass.to_text(rdclass),
                 dns.rdatatype.to_text(self.rdtype),
                 rd.to_text(origin=origin, relativize=relativize,
                            **kw),
                 extra))

Итак, как видите, self.ttl всегда включается в текстовый вывод rdataset.

Что вы можете сделать, так это выполнить итерацию по зоне, создав файл зоны в предпочитаемом стиле самостоятельно или внести изменения непосредственно в вывод to_text(), который представляет собой стандартизированное описание зоны, поэтому он достаточно стабилен для автоматической обработки. Краткий пример того, как это может выглядеть:

zone_lines = ['$TTL %s' % zone['@'].rdatasets[0].ttl]
for rdat in zone.to_text().decode('ascii').strip().split('\n'):
    rdat_params = rdat.split(' ')
    rdat_params.pop(1)
    zone_lines.append(' '.join(rdat_params))

zone_text = '\n'.join(zone_lines)

Вы также можете создать запрос функции для проекта dnspython на Github. Затем автор рассмотрит ваш запрос функции, в последнее время они довольно отзывчивы.

09.11.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..