`ip Route add`は重複エントリを受け入れません。これに頼ることができますか?

`ip Route add`は重複エントリを受け入れません。これに頼ることができますか?

パスを追加すると

ip route add 172.10.1.0/24 via 10.0.0.100 dev eth0

その後、パスがすでに存在するため、同じコマンドを2回目に実行すると失敗します。

この動作はどこにも文書化されていません。この動作に頼るのは安全ですか?それとも、他の/将来のバージョンのLinuxで冗長ルーティングを許可しますか?

はい

ルーティングテーブルを構成するbashスクリプトを作成しています。スクリプトを何度も実行しても安全にしたいです。

2つのオプションがあります。

  • コマンドをrunステートメントに入れて、ip route add正規表現を使用してパスが正しいことを確認してください。ifip route list

  • ただ実行してください。ip route addパスがすでに存在するため、失敗した場合は無視してください。

最初は依存する必要があるため、あまり強力には見えませんip route list。 2番目は文書化されていない動作に依存しているようです。

答え1

ip route replace代わりに使用できますadd

addこれは同じパラメータを使用しますが、パスが現在存在しても失敗しません。

man ip-route私たちに言ったように

IP ルート交換の
変更または新規追加

パスがまだ設定されていない場合は、自動的にパスを追加し、指定したパスに「変更」(交換)します。

関連情報