Для поиска внешнего ip вы можете использовать внешние веб-сервисы или системные методы. Чем проще пользоваться внешним сервисом, тем более что ifconfig
основанные решения будут работать в вашей системе, только если вы не находитесь за NAT
. эти два метода были обсуждены ниже подробно.
Нахождение внешнего IP с использованием внешних сервисов
Самый простой способ - использовать внешний сервис через браузер командной строки или инструмент загрузки. Поскольку wget
по умолчанию доступно в Ubuntu, мы можем использовать это.
Чтобы найти свой ip, используйте
$ wget -qO- https://ipecho.net/plain ; echo
Вежливость :
Вы также можете использовать lynx
(браузер) или curl
вместо wget
незначительных изменений вышеупомянутой команды, чтобы найти ваш внешний ip.
Используя, curl
чтобы найти IP:
$ curl https://ipecho.net/plain
Для лучшего форматированного вывода используйте:
$ curl https://ipecho.net/plain ; echo
Более быстрый (возможно , самый быстрый) способ использования dig
с в OpenDNS
качестве распознавателя:
Все остальные ответы здесь передаются по HTTP на удаленный сервер. Некоторые из них требуют анализа выходных данных или полагаются на заголовок User-Agent, чтобы сервер отвечал в виде простого текста. Они также меняются довольно часто (уходят, меняют свое имя, размещают рекламу, могут изменить формат вывода и т. Д.).
- Протокол ответа DNS стандартизирован (формат останется совместимым).
- Исторически службы DNS (OpenDNS, Google Public DNS и т. Д.), Как правило, живут дольше и являются более стабильными, масштабируемыми и обычно обслуживаются, чем любой новый хип-сервис whatismyip.com.
- (для тех гиков, которые заботятся о микрооптимизации), этот метод должен быть по своей природе быстрее (будь то всего несколько микросекунд).
Используя 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
NB: выходы являются ориентировочными, а не реальными.
Предоставлено: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
ОБНОВИТЬ
LANG=c
был добавлен к ifconfig
основному использованию, так что он всегда дает вывод на английском языке, независимо от настроек локали.