ラベル名によるIPアドレスエイリアスの削除

ラベル名によるIPアドレスエイリアスの削除

次のように作成したエイリアスを削除したいと思います。

ip addr add 192.168.1.1 dev eth0 label eth0:100

IPアドレスを知る必要はありません。基本的に私がしたいこと

ip addr del dev eth0 label eth0.100

その中では文書有効でなければなりませんが、以下を提供します。

ip: RTNETLINK answers: Operation not supported

その中で使ってみると

ip addr del $(ip addr list label eth0:100 | awk '{ print $2 }') dev eth0 label eth0.100

答え1

次のコマンドを使用してネットワークエイリアスを削除できますifconfig

/sbin/ifconfig eth0:100 down

コマンドマニュアルによると、ipIPアドレスを削除するにはデバイス名のみが必要です。残りのパラメーターはオプションです。引数が指定されない場合、最初の IP アドレスがインターフェイスから削除されます。しかし、実際にはこの動作を再現することはできません。
IPアドレスも必要なようです。

表示される最後のコマンドは、式がip addr list label eth0:100 | awk '{ print $2 }'ネットワークエイリアスのIPアドレスを提供し、そのIPをip addr delete ...コマンドに挿入するために機能します。

答え2

あなたが持っているのが最善のパスです(私はgrepoverを使用しますが、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のパラメータの構文を参照してください。パラメータは以下に定義されており、必須です(該当する内容はオプションです)。 IP/サブネットの組み合わせです。したがって、選択肢ではありません。IFADDRSTRINGIFADDRPREFIX[]PREFIX


使い方について私が意味するものはgrep次のとおりです。

ip addr del $(ip addr show label eth0:100 | grep -oP 'inet \K\S+') dev eth0 label eth0:100

その理由は、パラメータの位置が変更されるのを防ぐためです。出力のフィールド位置は、オプションのフィールドip addrに応じて変更できます。この部分は変わるようには思えませんが、inetそれは私の好みだけです。

答え3

ipコマンドには、-o解析に適した出力を生成するフラグがあります。たとえば、

# ip -o addr show label wlp2s0:1|awk '{print $4}'
172.16.127.5/24

コマンドは一般的に梱包するだけで十分です$(...)。以下があります。

# ip addr del $(ip -o addr show label wlp2s0:1|awk '{print $4}') dev wlp2s0

同じトピックのバリエーションですが、以下を使用しますxargs

# ip -o a show label wlp2s0:1|awk '{print $4}'|xargs -I% ip a del % dev wlp2s0

より短いコマンドaddrで置き換えることができます。a

注:

コマンドの場合、ipこれは2011のマニュアルページの必須構文です。IPアドレス(8)

ip address del IFADDR dev IFNAME

したがって、プレフィックスが付いたアドレスは従う必要があり、del必須dev IFNAMEです。

関連情報