web-dev-qa-db-ja.com

ラベル名でIPアドレスエイリアスを削除する

私が使用して作成したエイリアスを削除したい:

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
6
bcolpron

あなたが持っているのは最善のルートです(私は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フィールドは変更されないと思いますが、これは私の好みです。

2
Patrick

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

/sbin/ifconfig eth0:100 down

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

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

1
svq

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
_

短いコマンドの場合、addraに置き換えることができます。

サイドノート:

ipコマンドの場合、これは2011年のマンページ ip-address(8) のように必要な構文であることに注意してください

_ip address del IFADDR dev IFNAME
_

したがって、プレフィックス付きのアドレスはdelに続く必要があり、_dev IFNAME_が必要です。

0