次のように作成したエイリアスを削除したいと思います。
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
コマンドマニュアルによると、ip
IPアドレスを削除するにはデバイス名のみが必要です。残りのパラメーターはオプションです。引数が指定されない場合、最初の IP アドレスがインターフェイスから削除されます。しかし、実際にはこの動作を再現することはできません。
IPアドレスも必要なようです。
表示される最後のコマンドは、式がip addr list label eth0:100 | awk '{ print $2 }'
ネットワークエイリアスのIPアドレスを提供し、そのIPをip addr delete ...
コマンドに挿入するために機能します。
答え2
あなたが持っているのが最善のパスです(私はgrep
overを使用しますが、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/サブネットの組み合わせです。したがって、選択肢ではありません。IFADDR
STRING
IFADDR
PREFIX
[]
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
です。