Iproute

有沒有更方便的 iproute (ip ad) 版本?

  • March 2, 2020

使用iproute2命令 ip address delete(或縮寫ip a d)允許刪除協議地址(參見man ip address

問題ip a d的使用相當不方便,需要的參數比充分指定其任務所需的參數多。真的嗎?例子:

user@box$> ip a s 

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
2: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
   link/ether 24:ee:9a:00:00:01 brd ff:ff:ff:ff:ff:ff
   inet 10.192.0.174/24 brd 10.192.0.255 scope global dynamic noprefixroute wlo1
      valid_lft 415283sec preferred_lft 415283sec

user@box$> ip a d 10.192.0.174

Not enough information: "dev" argument is required.

user@box$> ip  a d 10.192.0.174 dev wlo1

Warning: Executing wildcard deletion to stay compatible with old scripts.
    Explicitly specify the prefix length (172.22.52.254/32) to avoid this warning.
    This special behaviour is likely to disappear in further releases,
    fix your scripts!

舉個例子,因為在大多數情況下,分配的 IP 地址只分配給單個網路設備,我真的想知道如何讓它iproute2一起行動並已經刪除 IP 地址,而不是讓我毫無意義地複製網路遮罩和網路設備.

甚至認為我目前很難看到多個網路設備將被分配相同 IP 的案例,或者使用不同的子網遮罩多次分配 IP 地址的情況(順便說一句,這種情況肯定iproute2不是願意忽略),我敢肯定,即使這些情況確實發生iproute2了,也可以得到幫助(意思是,僅在模棱兩可的情況下)。

有沒有人找到一種方法來ip a d減少無意義的工作?

順便說一句/獎金:有沒有辦法讓ip a a [ipadress]預設的網路遮罩比/32/更無意義255.255.255.255(或者有這個選擇的理由嗎?)?

首先:我完全同意@Yurko 的回答。然而,這是一個仍然可以解決您的問題的答案。

如果你想刪除一個地址而不考慮界面,你不應該使用ip address delbut ip address flush,因為幫助頁面提示:

      ip address {save|flush} [ dev IFNAME ] [ scope SCOPE-ID ]
                            [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up]

此子命令用於批量刪除地址。您可以通過各種方式限制其範圍。一種方法是to PREFIX.

因此,對於您的情況,這將起作用:

ip address flush to 10.192.0.174

它甚至會在出現在多個界面上的複雜設置中多次刪除此地址。

在那裡聲明一個網路遮罩會選擇整個範圍來搜尋刪除候選者,所以最好不要使用網路遮罩。這是與 不同的行為del,因為命令的作用不同。例如ip address flush to 192.0.2.100/31,將選擇以 192.0.2.100 或 192.0.2.101 開頭的任何前綴,無論它們自己的網路遮罩(可能是 /32 /24 或其他),以進行刪除。delete可能會回答沒有這樣的地址。

引用自:https://unix.stackexchange.com/questions/570711