ifconfig
を使用してネットエイリアスを削除できます コマンド:
/sbin/ifconfig eth0:100 down
ip
のマニュアルによると コマンドでは、IP アドレスの削除にデバイス名のみが必要です。残りの引数はオプションです。引数が指定されていない場合、最初の IP アドレスがインターフェイスから削除されます。しかし、実際にはこの動作を再現できませんでした。
IP アドレスも必要なようです。
あなたが示した最後のコマンドは、式 ip addr list label eth0:100 | awk '{ print $2 }'
のためだけに機能します ネット エイリアスの IP アドレスを指定し、この IP を ip addr delete ...
に挿入します コマンド。
あなたが持っているのは最良のルートです(ただし、 grep
を使用します awk
以上 、しかしそれは個人的な好みです)。その理由は、「ラベル」ごとに複数のアドレスを持つことができるためです。したがって、削除するアドレスを指定する必要があります。
# 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 ]
ip addr del
に注意してください パラメータが IFADDR
であることを示す構文 と STRING
. IFADDR
その下に定義され、PREFIX
と表示されます は必須パラメーターです ([]
内のもの) オプションです)。 PREFIX
IP/サブネットの組み合わせです。したがって、オプションではありません。
grep
を使用する意味について 、これですか:
ip addr del $(ip addr show label eth0:100 | grep -oP 'inet \K\S+') dev eth0 label eth0:100
これは、パラメータの位置が変更された場合に備えてです。 ip addr
内のフィールド位置 出力は、オプションのフィールドに基づいて変更できます。 inet
とは思えない フィールドは変更されますが、それは私の好みです.