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.