按位置从路由表中删除路由

按位置从路由表中删除路由

我知道如何从提供所有路由详细信息的路由表中删除路由 ( ip r d ...)。

有没有办法列出带有某种索引的路由表,然后通过索引从其位置中删除?

答案1

这是一个简单的 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来结束。

相关内容