Znajdź interfejs dla trasy do konkretnego hosta


14

Jak mogę dowiedzieć się na interfejsie sieciowym z wieloma systemami Linux, jaki interfejs sieci będzie używany do wysyłania pakietu do określonego hosta? Muszę to zrobić programowo i wolałbym nie analizować i samodzielnie interpretować tabeli routingu.


Do tego służy tabela routingu. Nie wyobrażam sobie inaczej.
GioMac,

Odpowiedzi:




5

Tak, jak sugeruje Michael Hampton, użyj ip route. Jeśli potrzebujesz tylko interfejsu, użyj tego

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

Na przykład:

# ip=8.8.8.8
# iface=$( ip -o route get $ip | perl -nle 'if ( /dev\s+(\S+)/ ) {print $1}' )
# echo $iface
eth1
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.