Linux

按位置從路由表中刪除路由

  • May 5, 2016

我知道如何從提供所有路由詳細資訊的路由表中刪除路由 ( ip r d ...)。

有沒有辦法列出帶有某種索引的路由表,然後通過索引從其位置刪除?

這是一個簡單的 bash 腳本,它利用內置select命令來顯示菜單。

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

它將目前路線讀入 array routes,然後select在菜單中顯示它們,例如:

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 del``control-d

引用自:https://unix.stackexchange.com/questions/281043