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 ifconfig
soluçõ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 wget
está 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 curl
no lugar de wget
pequenas variações do comando acima, para encontrar seu ip externo.
Usando curl
para 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 dig
with OpenDNS
como 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=c
foi adicionado aos ifconfig
usos baseados, para que sempre forneça a saída em inglês, independentemente da configuração da localidade.