Sie können den Netzalias mit ifconfig
löschen Befehl:
/sbin/ifconfig eth0:100 down
Gemäß Handbuch für ip
Befehl ist nur der Gerätename zum Löschen der IP-Adresse erforderlich. Die restlichen Argumente sind optional. Wenn keine Argumente angegeben werden, wird die erste IP-Adresse von der Schnittstelle gelöscht. Aber wirklich konnte ich dieses Verhalten nicht reproduzieren.
Anscheinend wird auch die IP-Adresse benötigt.
Der letzte gezeigte Befehl funktioniert nur, weil der Ausdruck ip addr list label eth0:100 | awk '{ print $2 }'
gibt die IP-Adresse des Netzalias an und fügt diese IP in ip addr delete ...
ein Befehl.
Was Sie haben, ist die beste Route (obwohl ich grep
verwenden würde über awk
, aber das ist persönliche Präferenz). Der Grund dafür ist, dass Sie mehrere Adressen pro „Label“ haben können. Daher müssen Sie angeben, welche Adresse Sie löschen möchten.
# 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 ]
Beachten Sie die ip addr del
Syntax, die besagt, dass die Parameter IFADDR
sind und STRING
. IFADDR
ist darunter definiert und sagt PREFIX
ist ein erforderlicher Parameter (Dinge in []
sind optional). PREFIX
ist Ihre IP/Subnetz-Kombination. Daher ist es nicht optional.
Was ich mit der Verwendung von grep
meinte , ist dies:
ip addr del $(ip addr show label eth0:100 | grep -oP 'inet \K\S+') dev eth0 label eth0:100
Der Grund dafür ist, falls sich die Position des Parameters ändert. Die Feldpositionen im ip addr
Die Ausgabe kann sich basierend auf optionalen Feldern ändern. Ich glaube nicht, dass inet
Feldänderungen, aber es ist nur meine Präferenz.