Atualizar ip do banco de dados externo do bind com o noip [RESOLVIDO]

1. Atualizar ip do banco de dados externo do bind com o noip [RESOLVIDO]

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 09/07/2012 - 19:57h

Boa noite a todos,
Sou iniciante no Linux e no site, estou precisando atualizar o banco externo do binde (/var/cache/bind/db.dominio.externa) com o ip do noip, pois uso um ip dinamico da Net Virtua, ja tenho o serviço do noip instalado no Ubuntu meu arquivo de configuração esta assim:

1
2 $TTL 86400
3 @ IN SOA ns1.dominio.com.br. root.dominio.com.br. (
4 2012070801
5 8h ; refresh
6 1h ; retry
7 3d ; expire
8 3h); negative caching tt1
9 ;
10 @ IN NS ns1.dominio.com.br.
11 @ IN MX 10 mail.thermoluz.com.br.
12 @ IN A 186.203.202.237
13 ns1 IN A 186.203.202.237
14 www IN A 186.203.202.237
15 ftp IN CNAME www
16 mail IN A 186.203.202.237
17 smtp IN CNAME mail
18 webmail IN CNAME mail
19 pop IN CNAME mail
20 imap IN CNAME mail

Eu gostaria de trocar todos os ip's 186.203.202.237 pelo ip atual do no-ip, alguém pode me ajudar?

Muito obrigado,
Jorge Santos


  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 11/07/2012 - 23:54h

Fase 2:


#!/bin/bash
# arquivo de configuração a ser alterado
ARQUIVO_ALVO='/var/cache/bind/db.dominio.externa'
# estou buscando o ip antigo baseado na linha que inicia com 'www IN A...'
IP_ANTIGO=$( egrep -i 'www IN A.*' $ARQUIVO_ALVO | egrep -o '[0-9].*[0-9]' )
# o novo ip (seu ip externo/ usado pelo no-ip):
IP_NOVO=$(wget -q -O /tmp/ip ifconfig.me/ip; cat /tmp/ip)
# a troca do ip antigo pelo novo
sed -i "s/$IP_ANTIGO/$IP_NOVO/g" $ARQUIVO_ALVO
# ------- fase 2 --------------------------------
BITS_REDE_NOVO=$(echo $IP_NOVO | cut -d. -f2).$(echo $IP_NOVO | cut -d. -f1)
BITS_REDE_ANTIGO=$( egrep -i '38.189.in-addr.arpa$' $ARQUIVO_ALVO | egrep -o '[0-9].*[0-9]' )
sed -i "/${BITS_REDE_ANTIGO}.*in-addr.arpa$/s/$BITS_REDE_ANTIGO/$BITS_REDE_NOVO/g" $ARQUIVO_ALVO


3. Re: Atualizar ip do banco de dados externo do bind com o noip [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 09/07/2012 - 22:54h

Isso arqui resolve:


#!/bin/bash
# arquivo de configuração a ser alterado
ARQUIVO_ALVO='/var/cache/bind/db.dominio.externa'
# estou buscando o ip antigo baseado na linha que inicia com 'www IN A...'
IP_ANTIGO=$( egrep -i 'www IN A.*' $ARQUIVO_ALVO | egrep -o '[0-9].*[0-9]' )
# o novo ip (seu ip externo/ usado pelo no-ip):
IP_NOVO=$(wget -q -O /tmp/ip ifconfig.me/ip; cat /tmp/ip)
# a troca do ip antigo pelo novo
sed -i "s/$IP_ANTIGO/$IP_NOVO/g" $ARQUIVO_ALVO



Agora basta agendar esse script no seu crontab para ser executado de tempos em tempos (como a cada 5 minutos).

crontab -e
*/5 * * * * /caminho/ate/o/script



4. Re: Atualizar ip do banco de dados externo do bind com o noip [RESOLVIDO]

André Carezia
carezia

(usa Debian)

Enviado em 10/07/2012 - 16:57h

Use o nsupdate.


5. Atualizar ip do banco de dados externo do bind

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 11/07/2012 - 21:33h

Rai3mb, sua dica foi muito boa, só me resta mais uma duvida, pois eu preciso atualizar o arquivo de zona reversa "/etc/bind/named.conf.local" na linha 8 tem o ip que preciso atualizar "204.186", esse ip é o meu ip da net classe B extermo, ele é representado apenas pela a parte de rede do ip e ao contrário, ex: meu ip externo é 189.38.252.242, na zona reversa ele é representado apenas pelos bits de rede e ao contrario, logo meu ip reverso é 242.252.38.189 e pegando apenas a parte de rede é "38.189" eu ja ouvi falar que o codigo rev de shell script inverte a strig, porém, não sei como adicionar o rev no codigo nem como fazer ele pegar apenas a parte do ip reverso externo que esta na linha 8 (38.189), se alguém poder ajudar fico muito grato.



view "externa" {
2 match-clients { !192.168.1.0/24; !127.0.0.1; any; };
3 recursion yes;
4 zone "dominio.com.br" {
5 type master;
6 file "db.dominio.externa";
7 };
8 zone "38.189.in-addr.arpa" {
9 type master;
10 file "rev.dominio.externa";
11 };
12 };
13
14 view "interna" {
15 match-clients { 192.168.1.0/24; 127.0.0.1; };
16 recursion yes;
17 zone "dominio.com.br" {
18 type master;
19 file "db.dominio.interna";
20 };
21 zone "1.168.192.in-addr.arpa" {
22 type master;
23 file "rev.dominio.interna";





O codigo é esse, Rai3mb ja deixou engatilhado:

1 #!/bin/bash
2 # arquivo de configuração a ser alterado
3 ARQUIVO_ALVO='/etc/bind/named.conf.local'
4 # estou buscando o ip antigo baseado na linha que inicia com 'www IN A...'
5 IP_ANTIGO=$( egrep -i ^www $ARQUIVO_ALVO | egrep -o '[0-9].*[0-9]' )
6
7 # o novo ip (seu ip externo/ usado pelo no-ip):
8 IP_NOVO=$(wget -q -O /tmp/ip ifconfig.me/ip; cat /tmp/ip)
9 # a troca do ip antigo pelo novo
10 sed -i "s/$IP_ANTIGO/$IP_NOVO/g" $ARQUIVO_ALVO




6. Re: Atualizar ip do banco de dados externo do bind com o noip [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 11/07/2012 - 23:59h

Não usei o rev, pois ele inverte literalmente a string, acredito que não é a sua necessidade:

echo '189.6.2.208' | rev
802.2.6.981

Se fossemos pegar o final, daria: 6.981

Você precisa de: 189.6, então usei o cut com o delimitador -d. (ponto), montando o segundo, seguido do primeiro campo.




7. Atualizar ip do banco de dados externo do bind com o noip

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 12/07/2012 - 00:52h

Rai3mb,
Mais uma vez você superou as limitações no mundo dos códigos, testei e funcionou, problema resolvido, sem palavras para agradecer, estou fazendo um curso de Linux rápido, me encantei com o Debian quando trabalhei nos Correios, mas realmente não entendo nada de Linux, Shell Script e essas coisas, só conhecia Windows até 6 meses atrás, mas as suas palavras inspiraram respeito, ajudou o seu próximo e a partir de agora novas coisas do bem surgirão na internet, se eu puder ajudar em alguma coisa com o meu curso ficarei feliz.

Mais uma vez obrigado, PROBLEMA RESOLVIDO!


8. Re: Atualizar ip do banco de dados externo do bind com o noip [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 12/07/2012 - 01:06h

Parabéns pelas suas escolhas, aprender GNU/Linux vai lhe ensinar que antes (no outro sistema) apenas usávamos o sistema, aqui no GNU/Linux nós aprendemos como ele funciona e "o porque" das coisas.

Obrigado pelas palavras! E bom aprendizado no curso!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts