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

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

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

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 модификаций в течение одного дня 🙂

  • Машина Debian повторяет запросы DNS для <gateway_ip> .in-addr.arpa
  • Связать доменное имя Google с веб-сайтом Python Flask, размещенным дома
  • Удалить постоянную переадресацию и очистить DNS
  • Получить общедоступные IP-адреса доступных веб-страниц?
  • Конфигурация DNS DNS для суффикса
  • Bind RPZ не влияет на Views
  • Не удается подключиться к Интернету. Работает Debian, работает pinging DNS-адрес
  • Solaris 11 nslookup отменяет ip
  • Как правильно настроить DNS. , , с концептуальной точки зрения
  • Запись Bind 9 не работает
  • Почему DNS-запросы терпят неудачу, если первый сервер имен не является рекурсивным?
  • Можно ли разрешить символ «\» в записи PTR?
  • Linux и Unix - лучшая ОС в мире.