Questão Comando para determinar meu IP público?


Se eu verificar com Google, Eu posso ver meu IP público. Existe algo na linha de comando do Ubuntu que me dará a mesma resposta?


526
2018-01-16 11:50


origem


"tendo IP dinâmico", "SSH usando algum outro sistema através da internet", "o comando que exibirá o presente IP PÚBLICO". Você vê o problema da galinha / ovo aqui? Como você seria capaz de executar comandos em um servidor remoto sem saber seu endereço? Você pode estar mais interessado em serviços como no-ip.com / DynDNS.org. - gertvdijk
não se pode SSH sem saber o IP público meu amigo ... dynDNS custa muito e não funciona ip duro mas a situação não permite que ... enfim a pergunta já foi respondida .. valeu pela sua sugestão - Z9iT
PS duckduckgo.com/?q=ip (sem linha de comando, mas nenhum irmão mais velho G nem) - Campa
Talvez isso deva ser uma pergunta à parte, mas eu gostaria de ver um alerta quando meu endereço IP público mudar. Por enquanto, estou apenas usando as seguintes respostas em um crontab com notify-send. - PJ Brunet


Respostas:


Se você não está atrás de um roteador, pode encontrá-lo usando ifconfig.

Se você estiver atrás de um roteador, o computador não saberá sobre o endereço IP público, pois o roteador faz uma conversão de endereço de rede. Você poderia perguntar a um site o que seu endereço IP público está usando curl ou wget e extraia as informações necessárias:

curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  

ou mais curto

curl ipinfo.io/ip

750
2018-01-16 11:56



ty - logo depois que postei, percebi que não pesquisei o Google primeiro: parece que isso funcionará curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  Outras possibilidades estão listadas aqui: go2linux.org/what-is-my-public-ip-address-with-linux - kfmfe04
claro - você pode adicioná-lo à sua resposta - kfmfe04
Para esclarecer: Isso foi um hack, e um muito feio nisso, então eu fiz uma edição para tornar mais simples e algo que as pessoas possam se lembrar. - jrg♦
Exatamente como Giovanni P afirmou. O OP deve mudar a resposta aceita. - loostro
curl -s ipinfo.io/ip - chao


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 é usar o serviço externo, também o ifconfig soluções com base funcionará no seu sistema somente se você não estiver atrás de um NAT. os dois métodos foram discutidos abaixo em detalhes.

Encontrar o 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. Desde a wget está disponível por padrão no Ubuntu, podemos usar isso.
Para encontrar seu ip, use

$ wget -qO- http://ipecho.net/plain ; echo

Cortesia:

Você também pode usar lynx(navegador) ou curl no lugar de wget com pequenas variações para o comando acima, para encontrar o seu ip externo.

Usando curl para encontrar o ip:

$ curl ipecho.net/plain

Para um melhor uso de saída formatada:

$ curl ipecho.net/plain ; echo

Um método mais rápido (indiscutivelmente o mais rápido) usando dig com OpenDNS como resolvedor:

As outras respostas aqui passam por HTTP para um servidor remoto. Alguns   eles exigem análise da saída ou dependem do cabeçalho User-Agent   para fazer o servidor responder em texto simples. Eles também mudam bastante   freqüentemente (vá abaixo, mude o nome deles / delas, ponha anúncios, pode mudar   formato de saída, etc.).

  1. O protocolo de resposta do DNS é padronizado (o formato permanecerá compatível).
  2. Historicamente, os serviços de DNS (OpenDNS, Google Public DNS, ..) tendem a sobreviver por muito mais tempo e são mais estáveis, escaláveis ​​e geralmente parecidos   depois do que qualquer novo serviço whatismyip.com HTTP hip é quente hoje.
  3. (para os geeks que se preocupam com a micro-otimização), este método deve ser inerentemente mais rápido (seja apenas por alguns micro segundos).

Usando dig 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

Encontrar o 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}'

Acima, substitua <interface_name> com o nome da 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 sabe 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 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 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

N.B: As saídas são indicativas e não reais.

Cortesia:  http://www.if-not-true-then-false.com/2010/linux-get-ip-address/

ATUALIZAR 

  1. LANG=c foi adicionado a ifconfig usos baseados, de modo que sempre forneça a saída em inglês, independentemente da configuração do local.

364
2018-06-01 12:10



@ Z9iT, Claro .. Ele deve funcionar em qualquer distribuição linux desde que você tenha o wget instalado. Como disse, se você tem ou curl ou lince já disponível, por favor use isso em seu lugar. Você precisaria de permissão de root para instalar, então use sudo apt-get install wget - saji89
Os comandos com ifconfig só funcionam, se você não estiver atrás de um NAT. - lukassteiner
Apenas use -w opção de curvar em vez de eco :) curl -w '\n' ident.me - drAlberT
Esta proposta usando dig é bem legal unix.stackexchange.com/questions/22615/… - binaryanomaly
@saji ifconfig se obsoleto, por favor use iproute2 ; ^). O comando seria ip -o -4 a s eth0 | awk '{sub(/\/.*/, "", $4);print $4}'. - bufh


Meu favorito sempre foi:

curl ifconfig.me

Simples, fácil de digitar.

Você terá que instalar o curl primeiro;)

Se ifconfig.me estiver desativado, tente icanhazip.com e / ou ipecho.net

curl icanhazip.com

ou

curl ipecho.net

103
2018-06-01 12:41



@ Z9iT, acabei de verificar isso agora. Sim, seria a saída do ip externo no seu terminal. - saji89
O tempo de resposta de ifconfig.me parece um pouco mais lento do que ipecho.net. - Drew Noakes
Se você não tem curl mas tem wget: wget -U curl -qO- ifconfig.me - Stéphane Chazelas
ifconfig.me parece não estar respondendo :( - Asfand Qazi
@AsfandYarQazi - trabalhando aqui. Você pode tentar um dos suplentes, icanhazip.com - Panther


icanhazip.com é meu favorito.

curl icanhazip.com

Você pode solicitar o IPv4 explicitamente:

curl ipv4.icanhazip.com

Se você não tem curl você pode usar wget em vez de:

wget -qO- icanhazip.com

55
2018-06-01 17:23



experimentar ipv4.icanhazip.com - yprez
IPv4: curl ipv4.icanhazip.com     IPv6: curl ipv6.icanhazip.com - Peter
O Busybox não tem ondulação, use isso em vez disso: wget -qO- http://icanhazip.com - Hengjie
aqui está um comando apenas bash: exec 3<>/dev/tcp/icanhazip.com/80 && echo -e 'GET / HTTP/1.0\n' >&3 && cat <&3 - jfs
ipv6.icanhazip.com parece não funcionar mais. - Hibou57


Eu encontrei tudo para ser chato e lento, então eu escrevi o meu próprio. É simples e rápido.

Sua API está ativada http://api.ident.me/

Exemplos:

curl ident.me
curl v4.ident.me
curl v6.ident.me

44
2018-01-03 15:49



Woah, isso foi realmente velozes! - waldyrious
eu acho a solução icanhazip.com mais rápido e inclui uma nova linha na saída. - Tyler Collier
Sim, foi realmente mais rápido ultimamente. Apenas mexi na minha solução. - Pierre Carrier
Parabéns! 2 anos e você ainda está mantendo isso. Bem feito. "IDENTify ME", é o que vem à minha mente, quando eu preciso verificar ip :) - Mohnish
@PierreCarrier v6.ident.me não funciona - SebMa


Você poderia usar uma solicitação de DNS em vez de uma solicitação HTTP para descobrir seu IP público:

$ dig +short myip.opendns.com @resolver1.opendns.com

Usa resolver1.opendns.com servidor de DNS para resolver o mágico myip.opendns.com hostname para seu endereço de IP.


37
2018-02-27 15:07



Isto é realmente velozes. Eu fiz uma execução de aquecimento, em seguida, 10 execuções de cada um destes e curl icanhazip.com. Média para o curl versão: 174ms. Média para a versão somente DNS: 9ms. ~ 19x mais rápido. Veja também: unix.stackexchange.com/a/81699/8383 - Adam Monsen
@AdamMonsen Obrigado pelo link. O ponto de usar DNS (como a resposta que você ligou diz) é que a resposta é padrão (e é improvável que mude) e o serviço (OpenDNS) pode ficar mais tempo do que a maioria de suas alternativas de HTTP. O tempo que leva para fazer a solicitação pode ser sombreado pelo tempo de inicialização do comando. - jfs
Sim. Eu não ficaria surpreso se curl em si é mais lento do que dig. Mesmo se eles foram reescritos para ser o mais semelhante possível, curl ainda seria mais lento; ele usa HTTP (Incluindo DNS) e dig só usa DNS. - Adam Monsen


O que eu estou usando é:

wget -O - -q icanhazip.com

Sim, você pode ter ip :-)


18
2018-01-16 14:20



eu prefiro curl icanhazip.com as vezes wget é o único disponível, mas às vezes não wget está disponível também e curl é sua única opção (como OS / X). De qualquer jeito curl icanhazip.com é quase tão fácil quanto curl ifconfig.me mas muito mais engraçado ;-) - TryTryAgain


Amazon AWS

curl http://checkip.amazonaws.com

Exemplo de saída:

123.123.123.123

Eu gosto disto porque:

  • ele retorna apenas o IP de texto simples, nada mais
  • é de um fornecedor bem conhecido que é improvável que fique offline em breve

16
2017-12-21 22:06