如何删除所有默认网关

Muh*_*ana 18 linux routing ip

我正在运行定制的 Linux 机器,因此并非所有 Linux 命令都可用
我执行网络相关命令,因此我需要在运行命令之前设置默认网关,然后立即删除该网关。

为此,我在一行中运行所有命令:

/sbin/route add default gw 10.10.10.10;my command;/sbin/route del default gw 10.10.10.10;
Run Code Online (Sandbox Code Playgroud)

问题是,由于某种原因,我曾经在同一台机器上发现了 2 个默认网关,这导致我的所有命令都失败了,因为即使我在运行测试之前设置了默认网关,它仍然很混乱,无法运行我的测试。

那么有没有办法在一个命令中删除所有默认网关?我有大量正在增加的机器,在每台机器上植入脚本是不切实际的。我需要一个简单的命令,如下所示:

/sbin/route del all default;set my default gw;mycommand;/sbin/route del all default;
Run Code Online (Sandbox Code Playgroud)

所有到目前为止,我还发现了一个命令来删除一个默认网关,但并不是所有的人 /sbin/route del default,不会为我工作。

/sbin/route 帮助显示以下内容

/sbin/route --help

Usage: route [{add|del|delete}]

Edit the kernel's routing tables

Options:
        -n      Don't resolve names
        -e      Display other/more information
        -A inet Select address family
Run Code Online (Sandbox Code Playgroud)

jsb*_*ngs 19

如果您使用ip而不是route,您可以简单地运行:

ip route del 0/0
Run Code Online (Sandbox Code Playgroud)

我相信这会捕获所有默认路由。

  • 那么也许您应该遍历所有默认路由,并删除它们,而不是假设您的第一次删除会删除所有这些路由。听起来您的代码不知何故中断并添加了多个默认路由。这不是正常情况。 (5认同)

小智 6

使用删除所有默认网关 ip

ip route flush 0/0
Run Code Online (Sandbox Code Playgroud)


Muh*_*ana 5

所有的答案都很好,但我使用不同的方法解决了这个问题,我使用该命令只添加了一个默认网关,但如果已经存在则失败。从而最终在命令末尾删除错误的网关。这应该第二次生效 inshallah。

ip route add default via my-gateway
ip route del default
Run Code Online (Sandbox Code Playgroud)