我正在运行定制的 Linux 机器,所以并非所有 Linux 命令都可用。
我执行网络相关命令,所以我需要设置默认网关在我运行命令之前,然后立即删除该网关。
为此,我在一行中运行所有命令:
/sbin/route add default gw 10.10.10.10;my command;/sbin/route del default gw 10.10.10.10;
问题是,由于某种原因,我曾经在同一台机器上发现了 2 个默认网关,这导致我的所有命令失败,因为即使我在运行测试之前设置了默认网关,它仍然很混乱并且无法运行我的测试。
那么有没有办法用一个命令删除所有默认网关?我有大量正在增加的机器,在每台机器上都植入一个脚本是不切实际的。我需要一个命令作为简单的如下:
/sbin/route del all default;set my default gw;mycommand;/sbin/route del all default;
到目前为止我发现的只是删除命令A默认网关,但不是全部,
/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
答案1
如果您使用ip
而不是route
,您可以简单地运行:
ip route del 0/0
我相信它捕获了所有默认路由。
答案2
要删除所有默认网关,请使用ip
ip route flush 0/0
答案3
所有答案都很好,但我使用一种不同的方法解决了这个问题,我使用命令仅添加一个默认网关,但如果已经有一个默认网关,则会失败。从而最终在命令结束时删除错误的网关。这应该第二次有效。
ip route add default via my-gateway
ip route del default
答案4
它解决了
https://github.com/hub4ops/vagrant/blob/main/Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "public_network", bridge: "Intel(R) Dual Band Wireless-AC 7265"
config.vm.provision "shell", inline: <<-SHELL
ip route del 0/0
ip route add 0.0.0.0/0 via 192.168.1.1
echo "nameserver 8.8.8.8" > /etc/resolv.conf
SHELL
end