場所別のルーティングテーブルからルートを削除する

場所別のルーティングテーブルからルートを削除する

すべてのルート詳細を提供するルーティングテーブルからルートを削除する方法を知っています(ip r d ...)。

ある種のインデックスを使用してルーティングテーブルを一覧表示し、インデックスに基づいてその場所から削除する方法はありますか?

答え1

これは、組み込みselectコマンドを使用してメニューを表示する単純なbashスクリプトです。

#!/bin/bash
mapfile -t routes <<<"$(ip route)"
select var in "${routes[@]}"
do   [ -n "$var" ] && sudo ip route del $var
done

現在のパスを配列として読み込み、メニューroutesselect表示します。たとえば、次のようになります。

1) default via 192.168.0.254 dev p4p1 
2) 169.254.0.0/16 dev p4p1  scope link  metric 1002 
3) 169.254.0.0/16 dev p4p2  scope link  metric 1003 
#? 

たとえば、プロンプトから#?削除したい行を入力して1返します。これは、前にコマンドが追加された文字列varの横に表示される文字列に設定されます。終了するには、ファイルの終わりを入力してください。1)sudo ip route delcontrol-d

関連情報