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
Mais simples que usar o meuip.com.br é utilizar o eth0.me
chronos@localhost / $ curl --interface mlan0 eth0.me
189.107.177.2
[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
Mensagem
[quote]
[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
[/quote]
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
Parabéns pela dica!
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782
Mensagem
Parabéns pela dica!
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782
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
Mensagem
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
[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?
Mensagem
[quote]
[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[/quote]
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?
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
Mensagem
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
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.
Mensagem
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
Enviar