使用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
,因为帮助页面提示:此子命令用于批量删除地址。您可以通过各种方式限制其范围。一种方法是
to PREFIX
.因此,对于您的情况,这将起作用:
它甚至会在出现在多个界面上的复杂设置中多次删除此地址。
在那里声明一个网络掩码会选择整个范围来搜索删除候选者,所以最好不要使用网络掩码。这是与 不同的行为
del
,因为命令的作用不同。例如ip address flush to 192.0.2.100/31
,将选择以 192.0.2.100 或 192.0.2.101 开头的任何前缀,无论它们自己的网络掩码(可能是 /32 /24 或其他),以进行删除。delete
可能会回答没有这样的地址。iproute2:是的,有原因,包括多个接口、虚拟接口、复杂路由、绑定接口等,最后是遗留和所有 *nix 系统上的相同行为。
您需要对其进行一次配置并忘记它,因此没有理由再次发明轮子。
如果您必须多次执行此操作,iproute2 提供了全套工具,可以在几分钟内轻松编写脚本并忘记它。
网络掩码 255.255.255.255 是默认的,这是有原因的,它将每个设备放入自己的子网中,迫使它们在到达任何其他设备的路上通过路由器进行通信......所以如果你不输入本地网络网络掩码 - >你没有本地网络。但是同样,您可以轻松地编写脚本,甚至可以通过创建别名来简单地更改它。