Localizar interface para rota para host específico


14

Em uma máquina Linux com hospedagem múltipla, como posso descobrir qual interface de rede será usada para enviar um pacote para um host específico? Preciso fazer isso programaticamente e prefiro não analisar e interpretar a tabela de roteamento.


É para isso que serve a tabela de roteamento. Eu não imagino o contrário.
GioMac

Respostas:



11

Opção mais curta:

ip route get 172.29.42.94

5

Sim, como Michael Hampton sugere, use ip route. Se você deseja apenas a interface, use este

ip -o route get $ip | perl -nle 'if ( /dev\s+(\S+)/ ) {print $1}'

Por exemplo:

# ip=8.8.8.8
# iface=$( ip -o route get $ip | perl -nle 'if ( /dev\s+(\S+)/ ) {print $1}' )
# echo $iface
eth1
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.