すべてのデフォルトゲートウェイを削除する方法


13

カスタムビルドの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

回答:


17

ip代わりに使用する場合はroute、単純に実行できます:

ip route del 0/0

私はそれがすべてのデフォルトルートをキャッチすると信じています。


ありがとうございます。それでも、すべてではなく、1つのデフォルトゲートウェイのみが削除されます。
ムハンマドゲルバナ

4
その後、最初の削除ですべてのデフォルトルートが削除されると仮定する代わりに、すべてのデフォルトルートを反復処理して削除する必要があります。コードが何らかの形で壊れており、複数のデフォルトルートを追加しているようです。これは通常の状況ではありません。
jsbillings

私のコードはある時点で壊れることに同意しますが、私が持っていない多くの時間を無駄にする代わりに、GWの問題を修正することでこれを迅速に解決できるかもしれません。ご協力ありがとうございます。
ムハンマドゲルバナ

これは最新のLinuxのみです。
ヨルダン


2

コードが複数のデフォルトゲートウェイで壊れている場合は、おそらくデバイスごとに複数のIPアドレスを調べる必要があります。

あなたはすでにここに答えを受け取ったとして、あなたがすべきであるとして、別のアプローチで決してあなたのシステムの構成を変更しないで実行したいという理由だけで/スクリプトをテストします。代わりにネットワーク名前空間を使用してください。NS(名前空間)に仮想デバイスを追加する方法については、http://code.google.com/p/coreemu/wiki/Namespacesをご覧ください。

testという名前空間を作成し、この名前空間でコマンドを実行するには、単に実行します

ip netns add test
ip netns exec test COMMAND

ここで、COMMANDは、たとえばシェルまたはサーバースクリプトだけです。


2

すべての答えは素晴らしいですが、別のアプローチを使用してこの問題を解決しました。コマンドを使用してデフォルトゲートウェイを1つだけ追加しましたが、既に存在する場合は失敗します。したがって、コマンドの最後に間違ったゲートウェイを最終的に削除します。これは2回目にisaで動作するはずです。

ip route add default via my-gateway ip route del default

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.