Найти интерфейс для маршрута к конкретному хосту


14

На машине с несколькими компьютерами Linux, как я могу узнать, какой сетевой интерфейс будет использоваться для отправки пакета на определенный хост? Мне нужно сделать это программно, и я бы предпочел не разбирать и не интерпретировать таблицу маршрутизации самостоятельно.


Вот для чего нужна таблица маршрутизации. Я не представляю это иначе.
GioMac

Ответы:




5

Да, как предполагает Майкл Хэмптон, используйте ip route. Если вы хотите только интерфейс, используйте этот

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

Например:

# ip=8.8.8.8
# iface=$( ip -o route get $ip | perl -nle 'if ( /dev\s+(\S+)/ ) {print $1}' )
# echo $iface
eth1
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.