Remover rota da tabela de roteamento por posição

2

Eu sei como excluir uma rota de uma tabela de roteamento fornecendo todos os detalhes da rota ( ip r d ... ).

Existe alguma maneira de listar a tabela de roteamento com algum tipo de índice e, em seguida, excluir de suas posições pelo índice?

    
por syntagma 04.05.2016 / 15:22

1 resposta

1

Aqui está um script simples que aproveita o comando select para apresentar um menu.

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

Ele lê as rotas atuais no array routes , então select apresenta isso em um menu, por exemplo:

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 
#? 

Para o prompt #? , digite a linha a ser excluída, por exemplo, 1 e return. Isso define var para a sequência mostrada próxima ao 1) , ao qual é prefixado o comando sudo ip route del . Digite um fim-de-arquivo control-d para finalizar.

    
por 05.05.2016 / 16:23