Descobrindo o endereço IP externo de cada link via terminal

Publicado por Perfil removido em 28/08/2015

[ Hits: 14.738 ]

 


Descobrindo o endereço IP externo de cada link via terminal



Nesta dica usaremos o curl, grep e awk .

No terminal execute o comando abaixo, alterando a interface de rede ao testar cada link conforme as existentes em seu ambiente, como nos exemplos abaixo.

Isto retornará em cada execução, apenas o endereço IP externo "de cada interface".

curl --interface eth0 http://www.meuip.com.br/ | grep 'Meu IP:' | awk -F' ' '{print $12}'
$ curl --interface eth1 http://www.meuip.com.br/ | grep 'Meu IP:' | awk -F' ' '{print $12}'
$ curl --interface ethN http://www.meuip.com.br/ | grep 'Meu IP:' | awk -F' ' '{print $12}'


Isso nos será útil ao menos para as seguintes situações:
  • Quando possuir mais de um link com a internet com endereço IP dinâmico, para saber qual o endereço IP externo atual em cada link.
  • Para confirmar a sua documentação da rede e testar se eventuais rotas que tenha definido estão corretas, caso possua IP fixo nos links.

Para mais opções sobre os comandos utilizados:

man curl
$ man grep
$ man awk


Outras dicas deste autor

Não é possível usar o Nautilus agora devido a um erro inesperado

Plymouth funcionando corretamente com as placas Intel

Arrastar e soltar downloads no ROX

Usando SkypeCast no Linux com versão 2.0 do Skype

Fedora Directory Server

Leitura recomendada

Como instalar driver wireless das placas broadcom b43

Configuração de rede IPv6 estática no Ubuntu

Configuração do yum com proxy no CentOS

Como acessar SSH pelo Thunar

Controlando o upload no Shaper

  

Comentários
[1] Comentário enviado por kram3r em 29/08/2015 - 10:07h

Mais simples que usar o meuip.com.br é utilizar o eth0.me

chronos@localhost / $ curl --interface mlan0 eth0.me
189.107.177.2

[2] Comentário enviado por removido em 29/08/2015 - 10:26h


[1] Comentário enviado por kram3r em 29/08/2015 - 10:07h

Mais simples que usar o meuip.com.br é utilizar o eth0.me

chronos@localhost / $ curl --interface mlan0 eth0.me
189.107.177.2


Este eu não conhecia, também uso o ifconfig.me/ip, mas quando escrevi a dica estava offline e acabei usando o meuip.com.br.

Obrigado por completar.

Edit:

Abaixo outros sites que poderiam ser utilizados, com a vantagem usar apenas o curl, tornando o comando mais simples para memorizar:


curl --interface <IFACE> ifconfig.co
curl --interface <IFACE> eth0.me <- Dica do @kram3r
curl --interface <IFACE> ifconfig.me/ip
curl --interface <IFACE> icanhazip.com

[3] Comentário enviado por wagnerfs em 30/08/2015 - 11:24h

Parabéns pela dica!
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782

[4] Comentário enviado por SMarcell em 31/08/2015 - 01:46h


Você também poderia utilizar o dig consultando diretamente servidores públicos de DNS como:

# Google Public DNS
$ dig -t txt o-o.myaddr.1.google.com @ns1.google.com +short

# OpenDNS
$ dig myip.opendns.com @resolver1.opendns.com +short

[5] Comentário enviado por removido em 31/08/2015 - 09:05h


[4] Comentário enviado por SMarcell em 31/08/2015 - 01:46h


Você também poderia utilizar o dig consultando diretamente servidores públicos de DNS como:

# Google Public DNS
$ dig -t txt o-o.myaddr.1.google.com @ns1.google.com +short

# OpenDNS
$ dig myip.opendns.com @resolver1.opendns.com +short


Uma boa forma também para obter o IP externo, mas acredito que não serviria neste caso.

Usei o curl, por conseguir com ele definir a interface por onde a conexão sera feita, ao que vi no manual não consigo isso diretamente com o dig, correto?


[6] Comentário enviado por SMarcell em 31/08/2015 - 10:46h


Ops, falha minha! Realmente não há como informar ao dig qual interface de saída utilizar diretamente, mas você pode usar a opção '-b' e especificar o endereço IP associado a interface que deseja usar para consulta.
Por exemplo, supondo que o endereço 192.168.1.254 esteja associado a interface eth0, você poderia fazer assim:

$ dig -b 192.168.1.254 myip.opendns.com @resolver1.opendns.com +short

[7] Comentário enviado por Tacioandrade em 04/09/2015 - 22:40h

Excelente dica, para facilitar minha vida, criei com base nela um shell script, onde recebe como parâmetro a interface de saída, melhor que ter que decorar o comando ou vim buscar na net quando quiser usar. ;)

#!/bin/bash
if [ "$1" ]
then
curl --interface $1 http://www.meuip.com.br/ | grep 'Meu IP:' | awk -F' ' '{print $12}'
else
echo "Digite a interface de saída desejada"
fi

Att. Tácio Andrade.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts