`ip route add` 不允许重复条目,我可以依赖它吗?

`ip route add` 不允许重复条目,我可以依赖它吗?

如果我添加一条路线

ip route add 172.10.1.0/24 via 10.0.0.100 dev eth0

然后第二次执行相同的命令,由于路由已经存在,因此失败。

我没有在任何地方看到这种行为的记录。依赖这种行为是否安全,或者不同/未来版本的 Linux 是否允许重复路由?

用例

我正在编写一个配置路由表的 bash 脚本。我想让脚本多次运行是安全的。

我看到两个选择:

  • 将命令放入运行的语句ip route add中,并使用正则表达式来检查路由是否已就位。ifip route list

  • 运行即可ip route add,如果失败则忽略,因为路由已经存在。

第一个似乎不是很强大,因为我必须依赖于ip route list.第二个似乎取决于无证行为。

答案1

您可以使用ip route replace代替add.

add当路由当前存在时,这采用相同的参数但不会失败。

正如man ip-route告诉我们的

ip 路由替换
更改或添加新的

当尚未设置路由时,它会默默地添加路由,并用您指定的任何内容“更改”(替换)它。

相关内容