Как увеличить серийный номер в зоне bind9 dns

У меня есть зона DNS, у которой есть серийный номер: 2015040500

Сегодня я собираюсь добавить там записи CNAME, поэтому меня интересует, как увеличить серийный номер, я хочу изменить его на основе сегодняшней даты, например, это будет: 2015042200 или просто увеличить его на один, так что это будет 2015040501?

  • Не удается разрешить все имена после подключения к VPN
  • Временное DNS-решение для локального ip (для временного перенаправления http)
  • Конфигурация DNS DNS для суффикса
  • Centos 7 Slow Resolve
  • Как включить рекурсию сервера имен?
  • Fedora VM: nslookup работает, пинг не отключается от Интернета
  • Всегда искать домены без доменов FQDN как .example.com?
  • Bind - правильная обратная конфигурация
  • Почему sendmail добавляет мое имя хоста в неизвестный целевой домен?
  • Как узнать сервер имен, который разрешает определенное имя хоста
  • Запуск моего собственного динамического хостинга DNS-записей
  • Имя хоста для полного расширения имени домена
  • 2 Solutions collect form web for “Как увеличить серийный номер в зоне bind9 dns”

    Вы можете сделать все, что угодно, единственное, что вы должны убедиться, это то, что новый серийный номер больше старого.

    Сказав это, я рекомендовал бы подход, основанный на временной шкале, по схеме, подобной:

    YYYYMMDDxx 

    где xx начинается с 00 и увеличивается для всех изменений в этот конкретный день (при редактировании в другой день вы сбросите xx на 00 )

    Основным преимуществом этой схемы является то, что вы также знаете дату последней модификации вашего зонного файла с первого взгляда.

    Он также увеличивает серийный номер.

    Альтернативой является запуск с 1 и просто увеличение при каждом редактировании файла.

    Если серийный номер уже основан на 2015040500 времени (и 2015040500 очень похож на него), вы, вероятно, придерживаетесь этого решения (даже если оно не сделано вами) и используйте логический преемник 2015042200

    Сценарий bash, который ищет:

      12345 ; Serial 

    в каталоге /etc/bind/zones . Он должен соответствовать любому числу раньше ; Serial ; Serial (с учетом регистра). И замените его на формат YYYYMMDDxx .

     #!/bin/bash ZONES_PATH="/etc/bind/zones" DATE=$(date +%Y%m%d) # we're looking line containing this comment NEEDLE="Serial" for ZONE in $(ls -1 $ZONES_PATH) ; do curr=$(/bin/grep -e "${NEEDLE}$" $ZONES_PATH/${ZONE} | /bin/sed -n "s/^\s*\([0-9]*\)\s*;\s*${NEEDLE}\s*/\1/p") # replace if current date is shorter (possibly using different format) if [ ${#curr} -lt ${#DATE} ]; then serial="${DATE}00" else prefix=${curr::-2} if [ "$DATE" -eq "$prefix" ]; then # same day num=${curr: -2} # last two digits from serial number num=$((10#$num + 1)) # force decimal representation, increment serial="${DATE}$(printf '%02d' $num )" # format for 2 digits else serial="${DATE}00" # just update date fi fi /bin/sed -i -e "s/^\(\s*\)[0-9]\{0,\}\(\s*;\s*${NEEDLE}\)$/\1${serial}\2/" ${ZONES_PATH}/${ZONE} echo "${ZONE}: " grep "; ${NEEDLE}$" $ZONES_PATH/${ZONE} done и #!/bin/bash ZONES_PATH="/etc/bind/zones" DATE=$(date +%Y%m%d) # we're looking line containing this comment NEEDLE="Serial" for ZONE in $(ls -1 $ZONES_PATH) ; do curr=$(/bin/grep -e "${NEEDLE}$" $ZONES_PATH/${ZONE} | /bin/sed -n "s/^\s*\([0-9]*\)\s*;\s*${NEEDLE}\s*/\1/p") # replace if current date is shorter (possibly using different format) if [ ${#curr} -lt ${#DATE} ]; then serial="${DATE}00" else prefix=${curr::-2} if [ "$DATE" -eq "$prefix" ]; then # same day num=${curr: -2} # last two digits from serial number num=$((10#$num + 1)) # force decimal representation, increment serial="${DATE}$(printf '%02d' $num )" # format for 2 digits else serial="${DATE}00" # just update date fi fi /bin/sed -i -e "s/^\(\s*\)[0-9]\{0,\}\(\s*;\s*${NEEDLE}\)$/\1${serial}\2/" ${ZONES_PATH}/${ZONE} echo "${ZONE}: " grep "; ${NEEDLE}$" $ZONES_PATH/${ZONE} done 

    Примечание: вы не должны делать более 99 модификаций в течение одного дня 🙂

    Linux и Unix - лучшая ОС в мире.