Знайдіть інтерфейс для маршруту до конкретного хоста


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.