有沒有更方便的 iproute (ip ad) 版本?
使用
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 del
butip 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
可能會回答沒有這樣的地址。