Você está usando Linux, MacOSX, FreeBSD, etc? A saída de 'ifconfig' é diferente para esses diferentes sistemas operacionais e o comando 'ip' não existe no MacOSX. Você está procurando o IP do seu computador (será necessário um script de shell para analisar o ifconfig, ou algo assim) ou o seu roteador (os sites abaixo podem funcionar)?
Stefan Lasiewski
Respostas:
49
curl ifconfig.me
curl ifconfig.me/ip (apenas para o ip)
curl ifconfig.me/all (para mais informações, leva tempo)
Isso é legal. Para qualquer versão mais fácil de lembrar, você pode inserir dig @resolver1.opendns.com myip.opendns.com. Ou no Windows: nslookup myip.opendns.com resolver1.opendns.com.
Michael Kropat
2
O que funcionou melhor para mim: dig @208.67.222.220 myip.opendns.com +shortpara obter diretamente o ip sem ter que passar por toda a resposta.
dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
dig -4 @resolver1.opendns.com -t a myip.opendns.com +short
Observe que o descrito acima funciona apenas para o IPv4 atualmente (nenhum desses resolvedores parece ter o IPv6 atualmente, mas se você omitir -4e o explícito -t a, corre o risco de quebrar no futuro (com exceção do Google txt, que pode realmente funcionar para IPv6 um dia, se ativado corretamente pelo Google)).
Note que isso myip.opendns.comsó pode ser resolvido resolver1.opendns.com, e não com auth1.opendns.com- então, eles parecem estar realizando algum seqüestro de DNS e o homem do meio de seu próprio nome de domínio! Portanto, você não pode usá-lo para encontrar o IP de um resolvedor aleatório, pois ele resolver1.opendns.comnão é autorizado myip.opendns.com.
Observe que o-o.myaddr.l.google.comparece a abordagem mais flexível e à prova de futuro; é até bom testar se o resolvedor DNS suporta a extensão experimental EDNS0 para sub-rede do cliente (para a qual poucos resolvedores têm suporte):
% dig @8.8.8.8 -t txt o-o.myaddr.l.google.com +noall +answer +stats | tail -8
;; global options: printcmd
o-o.myaddr.l.google.com. 60 IN TXT "74.125.189.16"
o-o.myaddr.l.google.com. 60 IN TXT "edns0-client-subnet 88.198.54.0/24"
;; Query time: 13 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Dec 8 20:38:46 2013
;; MSG SIZE rcvd: 114
Atualmente, o método de obtenção de registros TXT do Google suporta IPv4 e IPv6, portanto, você deve especificar -4ou -6se precisa de uma versão IP específica.
Martin
12
Uma resposta muito simples se você tiver acesso à Internet é:
curl icanhazip.com
Lembre-se de que confiar em fontes de terceiros para seu IP pode ser problemático, especialmente se o que você faz com esses dados tiver um significado especial.
Uma maneira mais confiável é escolher um servidor DNS conhecido e confiável (idealmente executando o DNSSEC) e consultar o nome do host da caixa com ele, desde que o servidor DNS contenha essas entradas;
você está conectado diretamente à internet (sem NAT / proxy / VPN, etc.)
então você pode simplesmente analisar a saída do ifconfig para os endereços IP das interfaces (a parte "inet addr:") para obter a lista de endereços IP de todas as suas interfaces. O único endereço IP que não está no intervalo privado (consulte http://en.wikipedia.org/wiki/IP_address#IPv4_private_addresses ) é o seu endereço IP público.
A mesma lista também pode ser obtida através de
ip addr show
o que pode ser mais fácil de analisar.
Se você não possui uma conexão direta à Internet (NAT, etc.), não há como encontrar seu endereço IP público sem ajuda externa (já que o computador não o conhece). Então você terá que fazê-lo como nas outras respostas.
Adotei uma abordagem um pouco diferente usando o protocolo STUN, projetado para o NAT Traversal. Se você usa o Ubuntu, basta instalar o pacote "stun" digitando:
sudo apt-get install stun
O pacote instala um servidor STUN do qual você provavelmente não precisará, mas também vem com um cliente de teste STUN que eu usei para resolver esse problema. Agora você pode recuperar seu IP público com um comando (não tão simples):
Agora, o que ele faz é: stun entra em contato com o servidor público STUN "stunserver.org" e recebe uma resposta com seu IP público, o restante do comando é apenas para filtrar o IP da saída.
Ele serve de texto simples com um tipo de texto / html ...
Bortzmeyer
não está exibindo seu IP no seu navegador?
2
Mas com o tipo errado.
Bortzmeyer
@bortzmeyer Uh, qual é o "tipo certo"? text/htmlé bom para o que a pseudo-API retorna - certamente não é XML ou JSON. text/plaintalvez, mas é totalmente utilizável como text/html.
ceejayoz
3
+1 para uma página que não precisa de grepping. Tambémwget -q -O - http://wgetip.com/
O Google, por algum motivo estranho, mostra apenas seu endereço IP com base em qual User-Agentsequência é fornecida à página. Com o Firefox, ele funciona; mas o SeaMonkey com a string "Firefox" desativada (por meio de "general.useragent.compatMode.firefox" definido como false), de repente não acontece. Não tenho absolutamente nenhuma idéia de por que o Google permite explicitamente coisas como essa apenas para o Firefox, em vez de apenas qualquer Gecko, já que existem muitos outros navegadores de desktop baseados no Gecko que são igualmente compatíveis, incluindo o SeaMonkey.
Isso retorna o endereço IP interno que não foi solicitado. Mas, para sua informação, você também pode fazer isso com o comando hostname -I(capital 'i').
Dessa forma, você pode fazer com que ele funcione na sua rede interna, se algum nat ou proxy estiver envolvido na comunicação e você quiser saber a partir de qual IP você aparece.
Para evitar depender de fontes externas, uso o expect, para telnetar no meu roteador e obter o endereço IP de sua interface pública. Aqui está um exemplo de script esperado:
Obviamente, isso se baseia na suposição de que eu tenho acesso de administrador ao roteador e é um roteador baseado em linux, com o comando ifconfig disponível.
Se o que você deseja é encontrar o endereço IP externo no seu roteador, solicite ao próprio roteador o endereço de wan ou peça a alguém de fora para buscá-lo.
de maneira manual, você pode navegar em qualquer um dos sites acima mencionados que retornarão o ip da solicitação recebida.
você pode usar apenas o shell para verificar seu ip externo, também usando provedores externos
#!/bin/bash
TCP_HOST="checkmyip.com"
TCP_PORT=80
exec 5<>/dev/tcp/"${TCP_HOST}"/"${TCP_PORT}"
echo -e "GET / HTTP/1.0\nHOST:${TCP_HOST}\n" >&5
while read -r line
do
case "$line" in
*"Your local IP address is"* )
line="${line#*Your local IP address is }"
line=${line%%</p>*}
echo "Your ip is: $line"
exec >&5-
exit
;;
esac
done <&5
Aqui está outra alternativa que depende dos hosts cuja empresa resolve gerenciar o IP dinâmico em vez dos sites de "serviço público" que podem desaparecer ou alterar o formato.
1) Registre seu servidor em um dos muitos serviços dinâmicos de DNS gratuitos (por exemplo, no-ip.com) Isso fornecerá uma entrada DNS como xxx.no-ip.org.
2) Instale a ferramenta de atualização dinâmica do serviço (relata alterações de IP no serviço).
Para obter o endereço IP em um script, basta:
$external_ip = `dig +short xxx.no-ip.org`
Ótimo para uso no trabalho do cron para verificar se o IP dinâmico foi alterado e algumas entradas de configuração precisam ser alteradas.
Respostas:
curl ifconfig.me
curl ifconfig.me/ip
(apenas para o ip)curl ifconfig.me/all
(para mais informações, leva tempo)Para mais comandos, visite: http://ifconfig.me/#cli_wrap
fonte
curl http://checkip.amazonaws.com/
Você pode solicitar
myip.opendns.com
. do OpenDNS.dig @208.67.222.220 myip.opendns.com
fonte
dig @resolver1.opendns.com myip.opendns.com
. Ou no Windows:nslookup myip.opendns.com resolver1.opendns.com
.dig @208.67.222.220 myip.opendns.com +short
para obter diretamente o ip sem ter que passar por toda a resposta.dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short
dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
dig -4 @resolver1.opendns.com -t a myip.opendns.com +short
Observe que o descrito acima funciona apenas para o IPv4 atualmente (nenhum desses resolvedores parece ter o IPv6 atualmente, mas se você omitir
-4
e o explícito-t a
, corre o risco de quebrar no futuro (com exceção do Googletxt
, que pode realmente funcionar para IPv6 um dia, se ativado corretamente pelo Google)).Note que isso
myip.opendns.com
só pode ser resolvidoresolver1.opendns.com
, e não comauth1.opendns.com
- então, eles parecem estar realizando algum seqüestro de DNS e o homem do meio de seu próprio nome de domínio! Portanto, você não pode usá-lo para encontrar o IP de um resolvedor aleatório, pois eleresolver1.opendns.com
não é autorizadomyip.opendns.com
.Observe que
o-o.myaddr.l.google.com
parece a abordagem mais flexível e à prova de futuro; é até bom testar se o resolvedor DNS suporta a extensão experimental EDNS0 para sub-rede do cliente (para a qual poucos resolvedores têm suporte):fonte
dig +short AAAA myip.opendns.com @2620:0:ccc::2
.-4
ou-6
se precisa de uma versão IP específica.Uma resposta muito simples se você tiver acesso à Internet é:
Lembre-se de que confiar em fontes de terceiros para seu IP pode ser problemático, especialmente se o que você faz com esses dados tiver um significado especial.
Uma maneira mais confiável é escolher um servidor DNS conhecido e confiável (idealmente executando o DNSSEC) e consultar o nome do host da caixa com ele, desde que o servidor DNS contenha essas entradas;
fonte
Eu escrevi um serviço web simples e rápido para isso.
Você pode solicitar seu IPv4:
Ou IPv6:
E a API está documentada em http://api.ident.me/
fonte
Uma maneira: http://www.whatismyip.com/
fonte
E se
então você pode simplesmente analisar a saída do ifconfig para os endereços IP das interfaces (a parte "inet addr:") para obter a lista de endereços IP de todas as suas interfaces. O único endereço IP que não está no intervalo privado (consulte http://en.wikipedia.org/wiki/IP_address#IPv4_private_addresses ) é o seu endereço IP público.
A mesma lista também pode ser obtida através de
o que pode ser mais fácil de analisar.
Se você não possui uma conexão direta à Internet (NAT, etc.), não há como encontrar seu endereço IP público sem ajuda externa (já que o computador não o conhece). Então você terá que fazê-lo como nas outras respostas.
fonte
Adotei uma abordagem um pouco diferente usando o protocolo STUN, projetado para o NAT Traversal. Se você usa o Ubuntu, basta instalar o pacote "stun" digitando:
O pacote instala um servidor STUN do qual você provavelmente não precisará, mas também vem com um cliente de teste STUN que eu usei para resolver esse problema. Agora você pode recuperar seu IP público com um comando (não tão simples):
Agora, o que ele faz é: stun entra em contato com o servidor público STUN "stunserver.org" e recebe uma resposta com seu IP público, o restante do comando é apenas para filtrar o IP da saída.
fonte
Uma maneira é fazer uma solicitação para a página em
http://www.biranchi.com/ip.php
retorna o endereço IP do seu sistema
fonte
text/html
é bom para o que a pseudo-API retorna - certamente não é XML ou JSON.text/plain
talvez, mas é totalmente utilizável comotext/html
.wget -q -O - http://wgetip.com/
O Google agora exibe seu endereço IP público: http://www.google.com/search?q=ip
fonte
User-Agent
sequência é fornecida à página. Com o Firefox, ele funciona; mas o SeaMonkey com a string "Firefox" desativada (por meio de "general.useragent.compatMode.firefox" definido como false), de repente não acontece. Não tenho absolutamente nenhuma idéia de por que o Google permite explicitamente coisas como essa apenas para o Firefox, em vez de apenas qualquer Gecko, já que existem muitos outros navegadores de desktop baseados no Gecko que são igualmente compatíveis, incluindo o SeaMonkey.Ok ... Eu sei que isso é MUITO MANUAL após o fato e provavelmente nem vale a pena postar, mas aqui está a minha solução de trabalho.
Agradável e simples.
fonte
hostname -I
(capital 'i').A maneira mais simples é usar http://ifconfig.me/ , conforme sugerido.
Nesta página, você saberá qual comando usar para quais informações deseja recuperar.
Para IP:
ouPara nome de host público:
Para todas as informações em um arquivo XML:
etc ... basta verificar http://ifconfig.me
fonte
Estou fazendo muito isso e em vários dispositivos, então fiz meus próprios dois serviços em um servidor:
arquivo php na raiz de um servidor web:
Uso em uma concha:
também trabalhando com ipv6:
Com o netcat:
Em um roteador Cisco:
hack rápido com um servidor de telnet personalizado: xinetd spawning / usr / bin / env:
e depois telnet para ele:
funciona da mesma forma com um roteador:
Dessa forma, você pode fazer com que ele funcione na sua rede interna, se algum nat ou proxy estiver envolvido na comunicação e você quiser saber a partir de qual IP você aparece.
Não requer nenhum serviço de terceiros.
fonte
Para evitar depender de fontes externas, uso o expect, para telnetar no meu roteador e obter o endereço IP de sua interface pública. Aqui está um exemplo de script esperado:
Em seguida, executo o script acima dessa maneira para obter o ip público:
Obviamente, isso se baseia na suposição de que eu tenho acesso de administrador ao roteador e é um roteador baseado em linux, com o comando ifconfig disponível.
fonte
Duplicado de muitas outras perguntas (daí o meu voto de -1).
fonte
Uma solução simples de script de shell pode ser encontrada aqui:
http://bash.cyberciti.biz/misc-shell/read-local-ip-address/
Funciona em Linux, FreeBSD, SunOS e Apple Darwin (com uma pequena modificação).
fonte
Se o que você deseja é encontrar o endereço IP externo no seu roteador, solicite ao próprio roteador o endereço de wan ou peça a alguém de fora para buscá-lo.
de maneira manual, você pode navegar em qualquer um dos sites acima mencionados que retornarão o ip da solicitação recebida.
De uma maneira automatizada, você pode tentar:
que lhe dará a linha que contém o endereço IP na resposta http e, em seguida, analisa-o com sed, awk, etc.
fonte
você pode usar apenas o shell para verificar seu ip externo, também usando provedores externos
saída
fonte
fonte
Eu faço isso. Apenas me fornece o IP sem nenhum envolvimento de terceiros.
show de endereço IP | grep eth0 | grep inet | tr-s "" | corte -f3 -d "" | corte -f1 -d "/"
fonte
fonte
Aqui está outra alternativa que depende dos hosts cuja empresa resolve gerenciar o IP dinâmico em vez dos sites de "serviço público" que podem desaparecer ou alterar o formato.
1) Registre seu servidor em um dos muitos serviços dinâmicos de DNS gratuitos (por exemplo, no-ip.com) Isso fornecerá uma entrada DNS como xxx.no-ip.org.
2) Instale a ferramenta de atualização dinâmica do serviço (relata alterações de IP no serviço).
Para obter o endereço IP em um script, basta:
$external_ip = `dig +short xxx.no-ip.org`
Ótimo para uso no trabalho do cron para verificar se o IP dinâmico foi alterado e algumas entradas de configuração precisam ser alteradas.
fonte
No OS X, aqui estão duas soluções simples para obter o IP público e o privado (com código de bônus se você usar o LaunchBar).
IP privado
Script LaunchBar
IP público
Script LaunchBar
fonte