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

有没有更方便的 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]更无意义的网络掩码(或者是否有这种选择的原因?)?/32255.255.255.255

答案1

第一:我完全同意@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可能会回答没有这样的地址。

答案2

iproute2:是的,有一些原因,包括多个接口、虚拟接口、复杂路由、绑定接口等,最后是遗留问题,并且在所有 *nix 系统上都有相同的行为。

您只需配置一次就可以忘记它,因此没有理由再次发明轮子。

如果您必须多次执行此操作,iproute2 提供了全套工具,可以轻松地在几分钟内编写脚本并忘记它。


网络掩码 255.255.255.255 是默认值是有原因的,它将每个设备放入自己的子网中,迫使它们通过路由器以到达任何其他设备的方式进行通信...因此,如果您不输入本地网络网络掩码 -> 您没有本地网络掩码网络。但同样,您可以轻松地编写脚本,甚至可以通过创建别名来简单地更改它。

相关内容