Как получить IP-адрес сервера на Centos 7 в bash

Ранее я использовал следующую команду в bash, чтобы найти основной ip моего сервера.

ipaddr=$(/sbin/ifconfig|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}' | grep -v '127.0.0.1')

Но в centos7 он больше не работает, так как ifconfig недоступен, и команда больше не работает, даже если я устанавливаю ifconfig с помощью yum install net-tools

Какова эквивалентная команда для Centos 7

большое спасибо

Ответы

Ответ 1

Вы можете использовать команду hostname:

ipaddr=$(hostname -I)

-i, --ip-address: Показать IP-адрес (а) хоста. Обратите внимание, что это работает, только если имя хоста может быть разрешено.

-i, --all-ip-addresses все сетевые адреса хоста. Эта опция перечисляет все настроенные адреса на всех сетевых интерфейсах. Интерфейс обратной связи и локальные адреса IPv6 опущены. В отличие от опции -i, эта опция не зависит от разрешения имени. Не делайте никаких предположений о порядке вывода.

Ответ 2

Введите команду ip addr в консоли

enter image description here

Ответ 3

Я использую Centos 7 и команду

ip a

достаточно, чтобы сделать работу.

enter image description here

Ответ 4

Что-то вроде этого - рифф на @maarten-vanlinthout answer

ip  -f inet a show eth0| grep inet| awk '{ print $2}' | cut -d/ -f1

Ответ 5

SERVER_IP="$(ip addr show ens160 | grep 'inet ' | cut -f2 | awk '{ print $2}')"

замените ens160 на ваше имя интерфейса

Ответ 6

Вы можете запустить простые команды, такие как

curl ifconfig.co

curl ifconfig.me

wget -qO - icanhazip.com

Ответ 7

На самом деле, когда вы не хотите использовать внешние источники (или не можете), я бы порекомендовал:

DEVICE=$(ls -l /sys/class/net | awk '$NF~/pci0/ { print $(NF-2); exit }')
IPADDR=$(ip -br address show dev $DEVICE | awk '{print substr($3,1,index($3,"/")-1);}')

Первая строка получает имя первого сетевого устройства на шине PCI, вторая - IP-адрес.

Кстати, ps... | grep... | awk... ps... | grep... | awk... ps... | grep... | awk... воняет awk не нуждается в grep.

Ответ 8

Немного поздно, однако я использую

curl -4 icanhazip.com 

возвращает основной IP-адрес сервера.

Ответ 9

Я считаю, что самым надежным способом получить внешний IP-адрес сервера будет использование внешней службы.

ipaddr=$(curl -s http://whatismyip.akamai.com/)

Ответ 10

Запустите эту команду, чтобы показать ip4 и ip6:

ifconfig eth0 | grep inet | awk '{print $2}' | cut -d/ -f1