Exclua o alias do endereço IP pelo nome do rótulo

6

Gostaria de excluir um alias criado usando:

ip addr add 192.168.1.1 dev eth0 label eth0:100

sem precisar saber o endereço IP. Basicamente, eu gostaria de fazer

ip addr del dev eth0 label eth0.100

que, de acordo com a documentação , deve ser válida, mas sim me dá:

ip: RTNETLINK answers: Operation not supported

Nesse meio tempo, trabalhei usando

ip addr del $(ip addr list label eth0:100 | awk '{ print $2 }') dev eth0 label eth0.100
    
por bcolpron 11.07.2014 / 20:06

2 respostas

2

O que você tem é o melhor caminho (embora eu use grep over awk , mas essa é uma preferência pessoal). A razão disso é porque você pode ter vários endereços por 'rótulo'. Assim, você precisa especificar qual endereço deseja excluir.

# ip addr help
Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]
                                                      [ CONFFLAG-LIST ]
       ip addr del IFADDR dev STRING
       ip addr {show|save|flush} [ dev STRING ] [ scope SCOPE-ID ]
                            [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ]
       ip addr {showdump|restore}
IFADDR := PREFIX | ADDR peer PREFIX
          [ broadcast ADDR ] [ anycast ADDR ]
          [ label STRING ] [ scope SCOPE-ID ]

Observe a sintaxe ip addr del , que diz que os parâmetros são IFADDR e STRING . IFADDR é definido abaixo disso e diz que PREFIX é um parâmetro obrigatório (as coisas em [] são opcionais). PREFIX é sua combinação de IP / sub-rede. Assim, não é opcional.

Quanto ao que eu quis dizer sobre usar grep , é isso:

ip addr del $(ip addr show label eth0:100 | grep -oP 'inet \K\S+') dev eth0 label eth0:100

A razão para isto é no caso da posição do parâmetro mudar. As posições dos campos na saída ip addr podem mudar com base nos campos opcionais. Eu não acho que o campo inet mude, mas é apenas minha preferência.

    
por 11.07.2014 / 23:57
1

Você pode excluir o alias de rede usando o comando ifconfig :

/sbin/ifconfig eth0:100 down

De acordo com o manual do comando ip , somente o nome do dispositivo é necessário para a exclusão do endereço IP. Os argumentos restantes são opcionais. Se nenhum argumento dado o primeiro endereço IP for excluído da interface. Mas realmente não consegui reproduzir esse comportamento.
Parece que o endereço IP também é necessário.

O último comando que você mostrou funciona apenas porque a expressão ip addr list label eth0:100 | awk '{ print $2 }' fornece o endereço IP do alias da rede e insere este IP no comando ip addr delete ... .

    
por 11.07.2014 / 23:06

Tags