Как захватить первый IP-адрес, который приходит из ifconfig
команды?
ifconfig -a
enw178032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 100.14.22.12 netmask 255.255.0.0 broadcast 100.14.255.255
inet6 fe80::250:56ff:fe9c:158a prefixlen 64 scopeid 0x20<link>
ether 00:10:56:9c:65:8a txqueuelen 1000 (Ethernet)
RX packets 26846250 bytes 12068811576 (11.2 GiB)
RX errors 0 dropped 58671 overruns 0 frame 0
TX packets 3368855 bytes 1139160934 (1.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Ожидаемый результат:
IP=100.14.22.12
Ответы:
Лучше избегать использования
ifconfig
для получения IP-адреса в скрипте, поскольку он не рекомендуется в некоторых дистрибутивах (например, CentOS и других, больше не устанавливайте его по умолчанию).В других системах вывод ifconfig варьируется в зависимости от выпуска дистрибутива (например, output / spacing / fields
ifconfig
отличается от Debian 8 до Debian 9, например).Для получения IP-адреса
ip
аналогичным образом вы спрашиваете:Или еще лучше:
Или, как вы спросите "IP ="
Бесстыдно адаптирует идею от @Roman
Нормальный выход:
От
man ip
:Посмотрите один пример того, почему
ifconfig
это не рекомендуется: BBB: `bbb-conf --check`, показывающий IP-адреса как` inet` - горе ifconfigЧтобы понять причину
ifconfig
выхода, смотрите раздел Разница между командами 'ifconfig' и 'ip'источник
awk
. Слишком много умственных способностей для меня, все еще просыпается. Избегайтеifconfig
, у него нет будущего, и позиция IP-адреса меняется, есть как минимум две разные версии / реализации (?) Для Linux, которые я знаю.-brief
параметр, и его вывод становится легче анализировать (2015-08-31: git.kernel.org/pub/scm/network/iproute2 /iproute2.git/commit/… )-o
что действительно кажется полезным для сценариевAwk
решение:Пример вывода:
источник
источник
ip addr | awk ' !/127.0.0.1/ && /inet/ { gsub(/\/.*/, "", $2); print "IP="$2 } '