Suchen Sie die Schnittstelle für die Route zu einem bestimmten Host


13

Wie kann ich auf einem Multihomed-Linux-Computer herausfinden, über welche Netzwerkschnittstelle ein Paket an einen bestimmten Host gesendet wird? Ich muss dies programmgesteuert ausführen, und ich möchte die Routing-Tabelle lieber nicht selbst analysieren und interpretieren.


Dafür ist die Routing-Tabelle gedacht. Ich kann es mir nicht anders vorstellen.
GioMac

Antworten:




4

Ja, wie Michael Hampton vorschlägt, benutze ip route. Wenn Sie nur die Schnittstelle möchten, verwenden Sie diese

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

Beispielsweise:

# ip=8.8.8.8
# iface=$( ip -o route get $ip | perl -nle 'if ( /dev\s+(\S+)/ ) {print $1}' )
# echo $iface
eth1
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.