Похоже на http://whatismyip.com уважать. Очевидно, потребуется запросить компьютер. Просто интересно, есть ли у кого-нибудь умный способ сделать это?
curl http://myip.dnsomatic.com
dig +short myip.opendns.com
Это работает, только если вы используете OpenDNS в качестве DNS-сервера.
Если это не так, один из них должен работать:
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 -v stun.ekiga.net ... MappedAddress = 88.189.152.187:18009
Вы можете использовать curl, чтобы получить страницу из чего-то вроде whatismyip, а затем извлечь фрагменты. В этом примере я использовал whatismyipaddress.com ... очевидно, что поля будут отличаться для разных служб.
curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }'
lynx -dump http://www.pcmesh.com/ip-check.cgi | awk '/REMOTE_ADDR/{print $2}'
Чтобы использовать это, нужно использовать серверы OpenDNS ... Вы можете запросить определенный DNS-сервер с помощью команды:
dig +short myip.opendns.com @208.67.222.222
Я просто запускаю трассировку куда-нибудь в Интернете и ищу переход из нашей локальной сети.
может есть способ получше?
"рысь http://whatismyip.com"
самый простой способ: curl ifconfig.me
вы можете использовать команду ifconfig для вывода списка всех интерфейсов и связанных с ними IP-адресов.
Итак, если вы знаете, что ваш интернет-интерфейс - ppp0, вы можете запустить
$ 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 будет вашим IP-адресом. Y.Y.Y.Y - это IP-адрес следующего перехода.
затем вы можете постобработать вывод ifconfig с помощью grep / awk / sed / cut / perl / something, чтобы извлечь только IP.
другой альтернативой, если у вас установлены инструменты iproute, является использование команды ip. например
$ 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
это, вероятно, легче читать и, конечно, легче разбирать:
$ ip addr list ppp0 | awk '/inet/ {print $2}' X.X.X.X