Síťový alias můžete odstranit pomocí ifconfig
příkaz:
/sbin/ifconfig eth0:100 down
Podle manuálu pro ip
pro smazání IP adresy je vyžadován pouze název zařízení. Zbývající argumenty jsou volitelné. Pokud nebudou zadány žádné argumenty, první IP adresa bude z rozhraní odstraněna. Ale ve skutečnosti jsem toto chování nedokázal reprodukovat.
Zdá se, že je vyžadována i adresa IP.
Poslední příkaz, který jste ukázali, funguje jen díky výrazu ip addr list label eth0:100 | awk '{ print $2 }'
dá IP adresu síťového aliasu a tuto IP vložte do ip addr delete ...
příkaz.
To, co máte, je nejlepší cesta (i když bych použil grep
více než awk
, ale to je osobní preference). Důvodem je to, že můžete mít více adres na „štítek“. Musíte tedy určit, kterou adresu chcete smazat.
# 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 ]
Všimněte si ip addr del
syntaxe, která říká, že parametry jsou IFADDR
a STRING
. IFADDR
je definován níže a říká PREFIX
je povinný parametr (věci v []
jsou volitelné). PREFIX
je vaše kombinace IP/podsítě. Není tedy volitelné.
Pokud jde o to, co jsem měl na mysli o použití grep
, je toto:
ip addr del $(ip addr show label eth0:100 | grep -oP 'inet \K\S+') dev eth0 label eth0:100
Důvodem je změna pozice parametru. Pozice polí v ip addr
výstup se může měnit na základě volitelných polí. Nemyslím si, že inet
pole se změní, ale je to jen moje preference.