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) 🙂