Похоже на поиск http://whatismyip.com . Очевидно, что нужно запросить компьютер там. Просто интересно, есть ли у кого умный способ сделать это?
Похоже на поиск http://whatismyip.com . Очевидно, что нужно запросить компьютер там. Просто интересно, есть ли у кого умный способ сделать это?
Ответы:
curl http://myip.dnsomatic.com
копать + коротко 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
@resolver1.opendns.com
(для удобства чтения)
STUN - правильное решение.
% 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}'
Вы можете использовать curl, чтобы получить страницу с чем-то вроде whatismyip, а затем получить кусочки. Я использовал whatismyipaddress.com в этом примере ... очевидно, поля будут отличаться для разных сервисов.
curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }'
я просто запускаю traceroute куда-нибудь в интернете и ищу выход из нашей локальной сети.
может быть, есть лучший способ?
"рысь http://whatismyip.com "
самый простой способ: curl ifconfig.me
Вы можете использовать команду ifconfig для вывода списка всех интерфейсов и связанных с ними IP-адресов.
Итак, если вы знаете, что ваш интернет-интерфейс ppp0, вы можете запустить
$ ifconfig ppp0 ppp0 Link encap: двухточечный протокол адрес в сети: XXXX.X PtP: ГГГГ Маска: 255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU: 1444 Метрика: 1 Пакеты RX: 198986 ошибок: 0 отброшено: 0 переполнений: 0 кадр: 0 Пакеты TX: 122929 ошибок: 0 отброшено: 0 переполнений: 0 несущая: 0 столкновений: 0 txqueuelen: 3 RX байтов: 134195571 (127,9 МиБ) TX байтов: 17101701 (16,3 МиБ)
XXXX будет вашим IP-адресом. YYYY - это IP-адрес следующего перехода.
Затем вы можете постобработать вывод ifconfig с помощью grep / awk / sed / cut / perl / что угодно, чтобы извлечь только IP.
Другой вариант, если у вас установлены инструменты iproute, это использовать команду ip. например
$ ip addr list ppp0 21842: ppp0: mtu 1444 qdisc htb state НЕИЗВЕСТНО qlen 3 ссылка / ррр inet XXXX peer YYYY / 32 область действия глобальная ppp0
это, вероятно, легче читать и, конечно, легче анализировать:
$ ip addr list ppp0 | awk '/ inet / {print $ 2}' XXXX