でルートを追加した場合
ip route add 172.10.1.0/24 via 10.0.0.100 dev eth0
次に同じコマンドをもう一度実行すると、ルートがすでに存在するため失敗します。
私はその行動がどこにも文書化されていないのを見ません。この動作に依存するのは安全ですか、それともLinuxの異なる/将来のバージョンで重複ルートが許可される可能性がありますか?
ユースケース
ルーティングテーブルを構成するbashスクリプトを書いています。スクリプトを安全に複数回実行できるようにしたい。
2つのオプションがあります。
ip route add
コマンドをip route list
を実行し正規表現を使用してルートがすでに配置されているかどうかを確認するif
ステートメント内に配置します。
ip route add
を実行し、ルートがすでに存在するために失敗した場合は無視します。
最初のものは、ip route list
の出力形式に依存する必要があるため、あまり堅牢ではないようです。 2つ目は、文書化されていない動作に依存しているようです。
add
の代わりにip route replace
を使用できます。
これはadd
と同じパラメーターを取りますが、ルートが現在存在する場合は失敗しません。
man ip-route
が教えてくれるように
ip route replace
新しいものを変更または追加する
ルートがまだ設定されていない場合はサイレントに追加し、指定したものに「変更」(置換)します。