ค้นหาอินเตอร์เฟสสำหรับเส้นทางไปยังโฮสต์ที่เฉพาะเจาะจง


14

บนเครื่อง Linux แบบ multihomed ฉันจะทราบได้อย่างไรว่าจะใช้อินเทอร์เฟซเครือข่ายแบบใดเพื่อส่งแพ็คเก็ตไปยังโฮสต์ที่เฉพาะเจาะจง ฉันต้องทำสิ่งนี้โดยทางโปรแกรมและฉันไม่อยากแยกและตีความตารางเส้นทางด้วยตัวเอง


นั่นคือตารางเส้นทางสำหรับ ฉันไม่คิดอย่างอื่น
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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.