Posso usar IPs atribuídos a interfaces de rede virtual em um script bash?

2

Eu estou querendo saber se é possível ler dinamicamente os endereços IP das interfaces de rede para uso em um script bash. Algo como:

#!/bin/bash
MYPUBLICIP= get_eth0_address
MYPRIVATEIP= get_eth0:0_address
  • Como eu faria isso?
  • É possível distinguir entre eth0 e virtual eth0: 0?

[segundo plano] Estou tentando escrever um script para aplicar várias regras ao iptables para um conjunto de VPSs. Eu estou tentando evitar ter que mexer com os IPs individuais de cada máquina.

    
por UpTheCreek 25.04.2013 / 10:34

2 respostas

5

ip sempre retornará todos os registros de endereço para uma interface física, mesmo se você especificar um virtual.

ifconfig permite que você especifique uma única interface, mas é um pouco mais irritante analisar:

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

EDITAR

A maneira ip pode ser gerenciada com o awk mais seletivo, é claro:

ip -o -4 addr sh |awk '/eth0:0/{print $4}'
    
por 25.04.2013 / 11:24
2

Algo como

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

deve fornecer o endereço IP da interface relevante.

    
por 25.04.2013 / 11:00