curl http://myip.dnsomatic.com
dig +short myip.opendns.com
Isso só funciona se você estiver usando o OpenDNS como seu servidor dns.
Se você não for, uma delas deve funcionar:
dig +short myip.opendns.com @208.67.222.222 dig +short myip.opendns.com @208.67.220.220 dig +short myip.opendns.com @208.67.222.222 @208.67.220.220
STUN é a solução adequada.
% stun -v stun.ekiga.net ... MappedAddress = 88.189.152.187:18009
lynx -dump http://www.pcmesh.com/ip-check.cgi | awk '/REMOTE_ADDR/{print $2}'
Deve-se usar os servidores do OpenDNS para usar isso ... Você pode consultar um determinado servidor DNS com escavações assim:
dig +short myip.opendns.com @208.67.222.222
Você pode usar o curl para obter a página de algo parecido com whatismyip e, em seguida, retirar as peças. Eu usei whatismyipaddress.com neste exemplo ... obviamente os campos serão diferentes com serviços diferentes.
curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }'
Eu apenas faço um traceroute em algum lugar da internet e procuro o salto para fora da nossa rede local.
talvez haja uma maneira melhor?
"lynx link "
você pode usar o comando ifconfig para listar todas as interfaces e seus endereços IP associados.
então, se você sabe que sua interface de internet é ppp0, você pode rodar
$ ifconfig ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:X.X.XX.X P-t-P:Y.Y.Y.Y Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1444 Metric:1 RX packets:198986 errors:0 dropped:0 overruns:0 frame:0 TX packets:122929 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:134195571 (127.9 MiB) TX bytes:17101701 (16.3 MiB)
X.X.X.X será o seu endereço IP. Y.Y.Y.Y é o endereço IP do próximo salto.
você pode então pós-processar a saída de ifconfig com grep / awk / sed / cut / perl / qualquer para extrair apenas o IP.
outra alternativa, se você tiver as ferramentas iproute instaladas, é usar o comando ip. por exemplo,
$ ip addr list ppp0 21842: ppp0: mtu 1444 qdisc htb state UNKNOWN qlen 3 link/ppp inet X.X.X.X peer Y.Y.Y.Y/32 scope global ppp0
provavelmente é mais fácil de ler e certamente mais fácil de analisar:
$ ip addr list ppp0 | awk '/inet/ {print $2}' X.X.X.X
a maneira mais simples é: curvar ifconfig.me