Какой терминальной командой получить только IP-адрес и больше ничего? - PullRequest
91 голосов
/ 16 декабря 2011

Я пытаюсь использовать только IP-адрес (inet) в качестве параметра в сценарии, который я написал.

Есть ли в unix-терминале простой способ получить только IP-адрес вместо просмотра ifconfig?

Ответы [ 24 ]

0 голосов
/ 15 августа 2013

Я бы использовал Hostname -L, чтобы получить только IP для использования в качестве переменной в скрипте.

0 голосов
/ 09 июля 2019

При поиске вашего внешнего IP-адреса на хосте с NAT, довольно много ответов предлагают использовать методы на основе HTTP, такие как ifconfig.me, например:

$ curl ifconfig.me/ip

За годы, которые я видел, как многие из этих сайтов приходят и уходят, я считаю этот метод на основе DNS более надежным:

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

У меня есть этот удобный псевдоним в моем ~/.bashrc:

alias wip='dig +short myip.opendns.com @resolver1.opendns.com'
0 голосов
/ 17 июля 2019

Для печати только IP-адрес eth0, без другого текста:

ifconfig eth0 | grep -Po '(?<=inet )[\d.]+'

Чтобы определить ваш основной интерфейс (потому что это может быть не «eth0»), используйте:

route | grep ^default | sed "s/.* //"

Приведенные выше две строки можно объединить в одну команду, например:

ifconfig `route | grep ^default | sed "s/.* //"` \
  | grep -Po '(?<=inet )[\d.]+'
0 голосов
/ 24 июля 2017

На Redhat 64bit, эта проблема решена для меня.

ifconfig $1|sed -n 2p|awk '{ print $2 }'|awk -F : '{ print $2 }'
...