Назад | Перейти на главную страницу

Как я могу отобразить IP-адрес интерфейса?

Если я хочу отобразить IP-адрес, назначенный eth1, как я могу сделать это в Bash?

Попробуйте это (Linux)

/sbin/ifconfig eth1 | grep 'inet addr:' | cut -d: -f2| cut -d' ' -f1

или это (Linux)

/sbin/ifconfig eth0 | awk -F ' *|:' '/inet addr/{print $4}'

или это (* BSD)

ifconfig bge0 | grep 'inet' | cut -d' ' -f2

или это (Solaris 10)

ifconfig e1000g0 | awk '/inet / {print $6}'

Очевидно, измените имя интерфейса, чтобы оно соответствовало тому, из которого вы хотите получить информацию.

Лучший способ: получить IP-адрес из команды "ip", потому что "ifconfig" устарел. В противном случае вы столкнетесь с проблемой при использовании «ifconfig», потому что вывод ifconfig зависит от языка.

Я использую эту команду для получения всех IP-адресов (IPv4):

ip addr show | grep -o "inet [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"

В системе Linux:

hostname --all-ip-addresses

даст вам только IP-адрес.

В системе Solaris используйте:

ifconfig e1000g0 | awk '/inet / {print $2}'

Как упомянул @Manuel, ifconfig устарело, и ip - это рекомендуемый подход в будущем.

ip -f inet addr show eth1

и использовать sed @ bleater или awk @Jason H. для фильтрации вывода (в зависимости от того, нужна ли вам маска)

ip -f inet addr show eth1 | sed -En -e 's/.*inet ([0-9.]+).*/\1/p'

ip -f inet addr show eth1 | awk '/inet / {print $2}'

может это поможет

ifconfig eth1

Один лайнер с sed:

ifconfig wlan0 | sed -En -e 's/.*inet ([0-9.]+).*/\1/p'

Замените wlan0 на желаемый интерфейс.

Я попробовал принятый ответ на CentOS 7, Но это не работает.

/sbin/ifconfig eth0 | grep 'inet ' | tr -s ' ' | cut -d" " -f3

работал у меня, если кто-то еще сталкивается с той же проблемой.