Вопрос: Команда для определения моего публичного IP?


Если я проверю Google, Я вижу свой публичный IP. Есть что-то в командной строке Ubuntu, которая даст мне тот же ответ?


517
2018-01-16 11:50


Источник


«с динамическим IP», «SSH с использованием какой-либо другой системы через Интернет», «команда, которая отобразит текущий PUBLIC IP». Вы видите проблему с курицей / яйцом? Как вы сможете запускать команды на удаленном сервере, не зная его адрес? Вы можете быть более заинтересованы в таких услугах, как no-ip.com / DynDNS.org. - gertvdijk
никто не может SSH, не зная публичного IP-адреса моего друга ... dynDNS стоит много, а не-ip жестко работает, но ситуация не позволяет этого ... в любом случае вопрос уже был дан. Спасибо за ваше предложение - Z9iT
PS duckduckgo.com/?q=ip (нет командной строки, но нет большого брата G ни) - Campa
Возможно, это должен быть отдельный вопрос, но я хотел бы увидеть предупреждение, когда изменится мой публичный IP-адрес. Пока, я просто использую следующие ответы в crontab с notify-send, - PJ Brunet


Ответы:


Если вы не находитесь за маршрутизатором, вы можете найти его, используя ifconfig,

Если вы находитесь за маршрутизатором, ваш компьютер не будет знать об общедоступном IP-адресе, поскольку маршрутизатор выполняет трансляцию сетевых адресов. Вы можете спросить какой-либо веб-сайт, что использует ваш общедоступный IP-адрес curl или wget и извлеките необходимую информацию из него:

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

или короче

curl ipinfo.io/ip

726
2018-01-16 11:56



ty - сразу после того, как я отправил сообщение, я понял, что сначала не ответил на Google: похоже, это сработает curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  Здесь перечислены другие возможности: go2linux.org/what-is-my-public-ip-address-with-linux - kfmfe04
конечно - вы можете добавить его в свой ответ - kfmfe04
Чтобы прояснить: это был взлом и очень уродливый, поэтому я сделал редактирование, чтобы сделать его более простым и что-то, что люди могут запомнить. - jrg♦
Очевидно, как заявил Джованни П. ОП должен изменить принятый андерсер. - loostro
curl -s ipinfo.io/ip - chao


Для поиска внешнего ip вы можете использовать внешние веб-сервисы или использовать системные методы. Чем проще использовать внешнюю службу, ifconfig основанные на решениях, будут работать в вашей системе, только если вы не находитесь за NAT, эти два метода подробно обсуждались ниже.

Поиск внешнего IP-адреса с использованием внешних сервисов

Самый простой способ - использовать внешнюю службу через браузер командной строки или инструмент для загрузки. поскольку wget по умолчанию доступен в Ubuntu, мы можем это использовать.
Чтобы найти ваш ip,

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

учтивость:

Вы также можете использовать lynx(браузер) или curl на месте wget с незначительными вариациями к вышеуказанной команде, чтобы найти ваш внешний ip.

С помощью curl найти ip:

$ curl ipecho.net/plain

Для лучшего форматированного вывода используйте:

$ curl ipecho.net/plain ; echo

Более быстрый (возможно самый быстрый) метод, использующий dig с OpenDNS как распознаватель:

Другие ответы здесь все передают HTTP на удаленный сервер. Некоторые из   они требуют разбора вывода или полагаются на заголовок User-Agent   чтобы сервер отвечал простым текстом. Они также весьма   часто (спуститесь, измените свое имя, разместите рекламу, можете изменить   выходной формат и т. д.).

  1. Протокол ответа DNS стандартизирован (формат будет оставаться совместимым).
  2. Исторически службы DNS (OpenDNS, Google Public DNS, ..) имеют тенденцию выживать намного дольше и более стабильны, масштабируемы и обычно выглядят   после того, как любой новый hip whatismyip.com HTTP-сервис сегодня горячий.
  3. (для тех выродков, которые заботятся о микро-оптимизации), этот метод должен быть по своей природе быстрее (будь то всего несколько микросекунд).

Использование dig с OpenDNS в качестве преобразователя:

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

111.222.333.444

Скопировано из:  https://unix.stackexchange.com/a/81699/14497

Поиск внешнего IP без использования внешних сервисов

  • Если вы знаете имя своего сетевого интерфейса

Введите в терминале следующее:

$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'

В приведенном выше примере замените <interface_name> с именем вашего фактического интерфейса, например: eth0, eth1, pp0, и т.д...

Пример использования:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
  • Если вы не знаете имя своего сетевого интерфейса

Введите в своем терминале следующее (это имя и IP-адрес каждого сетевого интерфейса в вашей системе):

$ 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 }'

Пример использования:

$ 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: Выводы являются индикативными и не реальными.

Предоставлено:  http://www.if-not-true-then-false.com/2010/linux-get-ip-address/

ОБНОВИТЬ 

  1. LANG=c был добавлен в ifconfig основанные на использовании, так что он всегда дает выход на английский язык, независимо от настройки локали.

359
2018-06-01 12:10



@ Z9iT, конечно. Он должен работать в любом дистрибутиве Linux, если у вас установлен wget. Как сказано, если у вас уже есть завиток или рысь, используйте это вместо этого. Вам необходимо установить права root для установки, поэтому используйте sudo apt-get install wget - saji89
Команды с ifconfig работают только, если вы не за NAT. - lukassteiner
просто используйте -w параметр curl вместо echo :) curl -w '\n' ident.me - drAlberT
Это предложение с помощью dig довольно приятно unix.stackexchange.com/questions/22615/... - binaryanomaly
@saji ifconfig если вы устарели, используйте iproute2 ; ^). Команда будет ip -o -4 a s eth0 | awk '{sub(/\/.*/, "", $4);print $4}', - bufh


Мой любимый всегда был:

curl ifconfig.me

простой, простой в использовании.

Вам придется сначала установить завиток;)

Если ifconfig.me не работает, попробуйте icanhazip.com или или ipecho.net

curl icanhazip.com

или

curl ipecho.net

101
2018-06-01 12:41



@ Z9iT, я просто проверил это сейчас. Да, он выводит внешний ip в вашем терминале. - saji89
Время отклика от ifconfig.me кажется довольно медленным, чем ipecho.net, - Drew Noakes
Если у вас нет curl но имеют wget: wget -U curl -qO- ifconfig.me - Stéphane Chazelas
ifconfig.me, похоже, не отвечает :( - Asfand Qazi
@AsfandYarQazi - работает здесь. Вы можете попробовать один из альтернатив, icanhazip.com - Panther


icanhazip.com мой любимый.

curl icanhazip.com

Вы можете запросить IPv4 явно:

curl ipv4.icanhazip.com

Если у вас нет curl вы можете использовать wget вместо:

wget -qO- icanhazip.com

54
2018-06-01 17:23



пытаться ipv4.icanhazip.com - yprez
IPv4: curl ipv4.icanhazip.com     IPv6: curl ipv6.icanhazip.com - Peter
У Busybox нет завитка, используйте вместо этого: wget -qO- http://icanhazip.com - Hengjie
вот только команда bash: exec 3<>/dev/tcp/icanhazip.com/80 && echo -e 'GET / HTTP/1.0\n' >&3 && cat <&3 - jfs
ipv6.icanhazip.com похоже, больше не работает. - Hibou57


Я обнаружил, что все раздражает и замедляется, поэтому я написал свой собственный. Это просто и быстро.

Его API включен http://api.ident.me/

Примеры:

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

43
2018-01-03 15:49



Woah, это было действительно быстро! - waldyrious
я нахожу решение icanhazip.com быстрее и включает в себя новую строку на выходе. - Tyler Collier
Да, в последнее время это было действительно быстрее. Просто изменил мое решение. - Pierre Carrier
Престижность! 2 года, и вы все еще поддерживаете его. Отлично сработано. «IDENTify ME», это то, что приходит мне на ум, когда мне нужно проверить ip :) - Mohnish
@PierreCarrier v6.ident.me не работает - SebMa


Вы можете использовать DNS-запрос вместо HTTP-запроса, чтобы узнать свой публичный IP-адрес:

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

Оно использует resolver1.opendns.com сервер DNS для решения магических задач myip.opendns.com имя хоста ваш айпи адрес.


36
2018-02-27 15:07



Это действительно быстро. Я сделал одно разминку, затем 10 казней каждый из этого и curl icanhazip.com, Среднее значение для curl версия: 174ms. Среднее значение для DNS-версии: 9 мс. ~ 19 раз быстрее. Смотрите также: unix.stackexchange.com/a/81699/8383 - Adam Monsen
@AdamMonsen Спасибо за ссылку. Точка использования DNS (как ответ, о котором вы говорили) говорит о том, что ответ является стандартным (и вряд ли изменится), и служба (OpenDNS) может придерживаться дольше, чем большинство ее альтернатив http. Время, необходимое для запроса, может быть затенено временем запуска команды. - jfs
Ага. Я не удивлюсь, если curl сама медленнее, чем dig, Даже если они были переписаны как можно более похожие, curl все равно будет медленнее; он использует HTTP (в том числе DNS) и dig использует только DNS. - Adam Monsen


Тот, который я использую:

wget -O - -q icanhazip.com

Да, у вас может быть ip :-)


17
2018-01-16 14:20



я предпочитаю curl icanhazip.com иногда wget является единственным доступным, но иногда нет wget также доступна и curl это ваш единственный вариант (например, OS / X). Так или иначе curl icanhazip.com почти так же легко, как и curl ifconfig.me но гораздо смешнее ;-) - TryTryAgain


Amazon AWS

curl http://checkip.amazonaws.com

Пример вывода:

123.123.123.123

Я люблю его, потому что:

  • он возвращает только IP-адрес открытого текста, ничего больше
  • это от известного поставщика, который вряд ли скоро отключится от сети

15
2017-12-21 22:06