Se eu verificar com google, eu posso ver o meu IP público. Há algo na linha de comando do Ubuntu que me dará a mesma resposta?
Se você não está atrás de um roteador, você pode encontrá-lo utilizando o ifconfig
.
Se você estiver atrás de um roteador, então seu computador não saberá do endereço IP público, pois o roteador faz uma tradução do endereço de rede. Você pode perguntar a algum site qual é o seu endereço IP público utilizando curl
ou wget
e extrair a informação que você precisa dele:
curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
ou mais curto
curl https://ipinfo.io/ip
Para encontrar o ip externo, você pode usar serviços externos baseados na web, ou usar métodos baseados no sistema. O mais fácil é utilizar o serviço externo, também as soluções baseadas no ifconfig
só funcionarão em seu sistema se você'não estiver atrás de um NAT
. os dois métodos foram discutidos abaixo em detalhes.
A maneira mais fácil é usar um serviço externo através de um navegador de linha de comando ou uma ferramenta de download. Como o wget
está disponível por padrão no Ubuntu, nós podemos utilizar isso.
Para encontrar o seu ip, use...
$ wget -qO- https://ipecho.net/plain ; echo
**Cortesia:
Você também pode utilizar lynx
(browser) ou curl
no lugar de wget
com pequenas variações do comando acima, para encontrar o seu ip externo.
Utilizando `curl' para encontrar o ip:
$ curl https://ipecho.net/plain
Para uma melhor formatação da saída:
$ curl https://ipecho.net/plain ; echo
dig
com OpenDNS
como resolvedor:As outras respostas aqui vão todas sobre HTTP para um servidor remoto. Algumas das respostas requerem a análise da saída, ou dependem do cabeçalho User-Agent para que o servidor responda em texto simples. Eles também mudam bastante frequentemente (ir para baixo, mudar de nome, colocar anúncios, pode mudar formato de saída, etc.).
- o protocolo de resposta DNS é padronizado (o formato permanecerá compatível). Os serviços DNS históricos (OpenDNS, Google Public DNS, ...) tendem a sobreviver por muito mais tempo e são mais estáveis, escaláveis e, de um modo geral, mais depois do que qualquer novo serviço HTTP do hip whatismyip.com está quente hoje.
- (para os geeks que se preocupam com a micro-optimização), este método deve ser inerentemente mais rápido (seja por apenas alguns micro segundos).
Usando escavação com OpenDNS como resolvedor:
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
Copiado de: https://unix.stackexchange.com/a/81699/14497
**Se você sabe 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 acima, substitua <nome_da_interface>
pelo nome da sua interface atual, por exemplo: eth0
, eth1
, pp0
, etc...
Exemplo de utilização:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
Digite o seguinte em seu terminal (isto obtém o nome e o endereço ip de cada interface de rede em 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 utilização:
$ 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
N.B: As saídas são indicativas e não reais.
Cortesia: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
**UPDATE***
LANG=c
foi adicionado aos usos baseados em ifconfig
, de modo que sempre dá a saída em inglês, independentemente da configuração locale.