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

Могу ли я использовать IP-адреса, назначенные виртуальным сетевым интерфейсам, в сценарии bash?

Мне интересно, можно ли динамически читать IP-адреса сетевых интерфейсов для использования в сценарии bash. Что-то вроде:

#!/bin/bash
MYPUBLICIP= get_eth0_address
MYPRIVATEIP= get_eth0:0_address

[Предпосылки] Я пытаюсь написать сценарий для применения различных правил к iptables для набора VPS. Я стараюсь не возиться с индивидуальными IP-адресами каждой машины.

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

ifconfig давайте укажем единый интерфейс, но это немного утомляет разбирать:

ifconfig eth0:0 |awk -F':| ' '/inet addr/{print $13}'

РЕДАКТИРОВАТЬ

В ip Конечно, можно управлять более избирательным awk:

ip -o -4 addr sh |awk '/eth0:0/{print $4}'

Что-то вроде

ip -4 -o addr show dev eth0 | sed 's/\// /g' | awk '{print $4}'

должен предоставить вам чистый IP-адрес соответствующего интерфейса.