私が使用して作成したエイリアスを削除したい:
ip addr add 192.168.1.1 dev eth0 label eth0:100
iPアドレスを知る必要はありません。基本的にやってみたい
ip addr del dev eth0 label eth0.100
documentation によると、これは有効であるべきですが、むしろ私に与えます:
ip: RTNETLINK answers: Operation not supported
その間、私は使用して回避しました
ip addr del $(ip addr list label eth0:100 | awk '{ print $2 }') dev eth0 label eth0.100
あなたが持っているのは最善のルートです(私は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 ]
パラメータがIFADDR
およびSTRING
であることを示すip addr del
構文に注意してください。 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
フィールドは変更されないと思いますが、これは私の好みです。
ifconfig
コマンドを使用してネットエイリアスを削除できます。
/sbin/ifconfig eth0:100 down
ip
コマンドのマニュアルによると、IPアドレスの削除にはデバイス名のみが必要です。残りの引数はオプションです。引数が指定されていない場合、最初のIPアドレスはインターフェースから削除されます。しかし、実際にはこの動作を再現できませんでした。
IPアドレスも必要なようです。
最後に示したコマンドは、式ip addr list label eth0:100 | awk '{ print $2 }'
がネットエイリアスのIPアドレスを提供し、このIPをip addr delete ...
コマンドに挿入するだけで機能します。
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-address(8) のように必要な構文であることに注意してください
_ip address del IFADDR dev IFNAME
_
したがって、プレフィックス付きのアドレスはdel
に続く必要があり、_dev IFNAME
_が必要です。