私はカスタムLinuxボックスを実行しています。すべてのLinuxコマンドを使用できるわけではありません。。
ネットワーク関連のコマンドを実行するので必要です。デフォルトゲートウェイ設定コマンドを実行する前にゲートウェイをすぐに削除します。
これを行うには、すべてのコマンドを1行で実行します。
/sbin/route add default gw 10.10.10.10;my command;/sbin/route del default gw 10.10.10.10;
問題は、何らかの理由で同じコンピュータで2つのデフォルトゲートウェイを見つけたことで、すべてのコマンドが失敗したことです。これは、テストを実行する前にデフォルトゲートウェイを設定しても問題があり、テストが実行されていないためです。
それでは方法はありませんか1つのコマンドですべてのデフォルトゲートウェイを削除する?私はますます多くのコンピュータを持っており、すべてのコンピュータにスクリプトを配置することは非現実的です。次のコマンドが必要です。シンプル次のように:
/sbin/route del all default;set my default gw;mycommand;/sbin/route del all default;
これまで私が見つけたのは削除コマンドだけです。ㅏデフォルトゲートウェイですが、すべてではありませんが、
/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
すべての回答は良いですが、別のアプローチを使用してこの問題を解決しました。コマンドを使用してデフォルトゲートウェイのみを追加しましたが、デフォルトゲートウェイがすでに存在する場合は失敗しました。したがって、コマンドが終了すると、最終的に無効なゲートウェイが削除されます。これは2回目でも機能します。
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