Puoi eliminare net alias usando ifconfig
comando:
/sbin/ifconfig eth0:100 down
Secondo il manuale per ip
comando, è richiesto solo il nome del dispositivo per l'eliminazione dell'indirizzo IP. Gli altri argomenti sono facoltativi. Se non vengono forniti argomenti, il primo indirizzo IP verrà eliminato dall'interfaccia. Ma in realtà non sono riuscito a riprodurre questo comportamento.
Sembra che sia richiesto anche l'indirizzo IP.
L'ultimo comando che hai mostrato funziona solo perché l'espressione ip addr list label eth0:100 | awk '{ print $2 }'
fornisce l'indirizzo IP dell'alias di rete e inserisce questo IP in ip addr delete ...
comando.
Quello che hai è il percorso migliore (anche se userei grep
oltre awk
, ma questa è una preferenza personale). Il motivo è perché puoi avere più indirizzi per "etichetta". Quindi devi specificare quale indirizzo vuoi eliminare.
# 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 ]
Nota il ip addr del
sintassi che dice che i parametri sono IFADDR
e STRING
. IFADDR
è definito sotto quello, e dice PREFIX
è un parametro obbligatorio (cose in []
sono opzionali). PREFIX
è la tua combinazione IP/sottorete. Quindi non è facoltativo.
Per quanto riguarda ciò che intendevo sull'uso di grep
, è questo:
ip addr del $(ip addr show label eth0:100 | grep -oP 'inet \K\S+') dev eth0 label eth0:100
La ragione di ciò è nel caso in cui la posizione del parametro cambi. I campi si posizionano nel ip addr
l'output può cambiare in base ai campi opzionali. Non credo che il inet
il campo cambia, ma è solo una mia preferenza.