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
Montando imagens de discos no Linux
Impressões PDF perdidas no Vector Linux e derivados do Slackware
Bloqueando pasta no Linux
Alterando o Splash Screen (tela de apresentação) no KDE
Authentication Failure no GDM no Arch Linux [Solução]
Leitura recomendada
Instalar programas no Windows pela rede Samba
NTFS + Samba com o SELinux ativado
Verificando IPs ativos em determinada rede com fping
Instalação e configuração do Grafana/Zabbix no Debian 9
Erro de "apt-get update" no Ubuntu 16.04 Xenial - problemas nos repositórios [RESOLVIDO]
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