Atualizando os IPs em vários domínios no Bind (named)!

Esse simples script que eu desenvolvi tem como objetivo atualizar a sua lista dns de um modo prático e rápido, substituindo ips antigos por ips novos, facilitando a manutenção de quem tem muitos domínios e ou o ip muda sempre. Para completar, ele atualiza também o número de série do(s) domínio(s) de acordo com os padrões! E pode ser utilizado para atualizar qualquer outro arquivo em que se precise alterar o IP constantemente, como por exemplo o arquivo de configuração de um servidor de irc, do servidor web… etc! 💡

Para utilizar, é só configurar a variável $arquivos com a lista de arquivos a serem atualizados pelo script.

#!/bin/bash
arquivos=/var/named/dominio1.com.br /var/named/*.net.br /home/ircd/ircd.conf
if [ -z "$2" ]; then
  echo "Utilize: $0 <ip antigo> <ip novo>"
  echo "Exemplo: $0 127.0.0.1 127.0.0.2"
else
  echo Alterando IPs de $1 por $2:
  for i in $arquivos
  do
    if [ -n "`grep $1 $i`" ]
    then
      echo Atualizando $i ...
      sed s/$1/$2/g $i > new.tmp
      today=`date +%Y%m%d`
      serial=`grep -i serial $i | awk '{ print $1 }'`
      if [ -n "$serial" ]
      then
        date=`grep -i serial $i | awk '{ print substr($1,1,8) }'`
        if [ $today = $date ]
        then
          version=`grep -i serial $i | awk '{ print substr($1,9,10) }'`
          inc=`expr $version + 1`
          newversion=`echo 0$inc | awk '{ print substr($1,length($1)-1,length($1)) }'`
        else
          newversion=01
        fi
        sed s/$serial/$today$newversion/g new.tmp > $i
        rm new.tmp
      else
        mv new.tmp $i
      fi
    fi
  done
  killall -HUP named
  # postfix reload # (remova o # incial para recarregar o postfix quando concluir)
  # ircd reload # (adicione outros comandos para reiniciar serviços se interessar)
  echo Concluído!
fi

Observação: é interessante comentar com ; serial a linha que contém o número de série do domínio nos arquivos do bind, assim o script detecta e atualiza o número de série corretamente (por exemplo) 🙂

Escreva seu comentário: