Para encontrar o ip externo, você pode usar serviços externos baseados na Web ou métodos baseados no sistema. Quanto mais fácil for usar o serviço externo, também as ifconfigsoluções baseadas funcionarão no seu sistema somente se você não estiver atrás de um NAT. os dois métodos foram discutidos abaixo em detalhes.
Localizando IP externo usando serviços externos
A maneira mais fácil é usar um serviço externo por meio de um navegador de linha de comando ou ferramenta de download. Como wgetestá disponível por padrão no Ubuntu, podemos usá-lo.
Para encontrar seu ip, use-
$ wget -qO- https://ipecho.net/plain ; echo
Cortesia :
Você também pode usar lynx(navegador) ou curlno lugar de wgetpequenas variações do comando acima, para encontrar seu ip externo.
Usando curlpara encontrar o ip:
$ curl https://ipecho.net/plain
Para uma saída melhor formatada, use:
$ curl https://ipecho.net/plain ; echo
Um método mais rápido (sem dúvida o mais rápido) usando digwith OpenDNScomo resolvedor:
As outras respostas aqui passam por HTTP para um servidor remoto. Alguns deles exigem análise da saída ou dependem do cabeçalho User-Agent para fazer o servidor responder em texto sem formatação. Eles também mudam com bastante frequência (desça, mude o nome, publique anúncios, pode alterar o formato da saída etc.).
- O protocolo de resposta DNS é padronizado (o formato permanecerá compatível).
- Historicamente, os serviços DNS (OpenDNS, Google Public DNS, ..) tendem a sobreviver por muito mais tempo e são mais estáveis, escaláveis e geralmente tomados em conta do que qualquer novo serviço HTTP de whatismyip.com atualmente em alta hoje.
- (para aqueles geeks que se preocupam com a micro-otimização), esse método deve ser inerentemente mais rápido (seja por apenas alguns segundos).
Usando dig com o OpenDNS como resolvedor:
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
Copiado de: https://unix.stackexchange.com/a/81699/14497
Localizando IP externo sem depender de serviços externos
- Se você souber o nome da sua interface de rede
Digite o seguinte no seu terminal:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
No exemplo acima, substitua <interface_name>com o nome de sua interface real, por exemplo: eth0, eth1, pp0, etc ...
Exemplo de uso:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
- Se você não souber o nome da sua interface de rede
Digite o seguinte no seu terminal (isso obtém o nome e o endereço IP de cada interface de rede no seu sistema):
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
Exemplo de uso:
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444
Nota: as saídas são indicativas e não reais.
Cortesia: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
ATUALIZAR
LANG=cfoi adicionado aos ifconfigusos baseados, para que sempre forneça a saída em inglês, independentemente da configuração da localidade.