วิธีรับเกตเวย์เริ่มต้นใน Mac OSX


119

ฉันต้องการดึงข้อมูลเกตเวย์เริ่มต้นบนเครื่อง Mac ฉันรู้ว่าในเส้นทาง Linux -n จะให้ผลลัพธ์ที่ฉันสามารถดึงข้อมูลนี้ได้อย่างง่ายดาย อย่างไรก็ตามสิ่งนี้ใช้ไม่ได้ใน Mac OSX (Snow Leopard)

ฉันลองnetstat -nr | grep 'default'ด้วย แต่ฉันหวังว่าจะได้ผลลัพธ์ที่สะอาดกว่าเช่นเดียวกับที่ผลิตroute -nใน Linux / Unix netstat -nrแสดงรายการอินเทอร์เฟซทั้งหมดและเกตเวย์เริ่มต้นสำหรับพวกเขา

ข้อเสนอแนะหรือคำใบ้ในทิศทางที่ถูกต้องจะได้รับการชื่นชม


3
ย้ายไปที่ SuperUser ไหม
JMD

3
FYI คุณสามารถ Option + คลิกที่ไอคอน WiFi บนแถบสถานะ ข้อมูลนี้แสดงข้อมูลเพิ่มเติมรวมถึงเกตเวย์
Petr Újezdský

คำตอบ:


189

คุณสามารถลองใช้:

route -n get default

ไม่เหมือนกับของ GNU / Linux route -n(หรือแม้แต่ip route show) แต่มีประโยชน์ในการตรวจสอบข้อมูลเส้นทางเริ่มต้น นอกจากนี้คุณสามารถตรวจสอบเส้นทางที่แพ็กเกจจะไปยังโฮสต์เฉพาะได้ เช่น

route -n get www.yahoo.com

ผลลัพธ์จะคล้ายกับ:

   route to: 98.137.149.56
destination: default
       mask: 128.0.0.0
    gateway: 5.5.0.1
  interface: tun0
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0

IMHO netstat -nrคือสิ่งที่คุณต้องการ แม้แต่แอปยูทิลิตี้เครือข่ายของ MacOSX (*) ก็ใช้ผลลัพธ์ของ netstat เพื่อแสดงข้อมูลเส้นทาง ภาพหน้าจอยูทิลิตี้เครือข่ายที่แสดงข้อมูลตารางเส้นทาง

ฉันหวังว่านี่จะช่วยได้ :)

(*) คุณสามารถเริ่มยูทิลิตี้เครือข่ายด้วย open /Applications/Utilities/Network\ Utility.app


ขอบคุณ คุณช่วยฉันไม่กี่ชั่วโมงที่บ้านหลังใหม่เมื่อโมเด็มของ Time Warner ตัดสินใจว่าต้องการ IP ที่เราเตอร์ของฉันเคยมีและ ifconfig โกหกเกี่ยวกับเกตเวย์
Chris Doggett

38

สำหรับการรับรายการที่อยู่ IP ที่เชื่อมโยงคุณสามารถใช้คำสั่งnetstat

netstat -rn 

สิ่งนี้ให้รายการที่อยู่ IP ที่ยาวและไม่ใช่เรื่องง่ายที่จะค้นหาฟิลด์ที่ต้องการ ผลลัพธ์ตัวอย่างมีดังต่อไปนี้:

Routing tables
Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.195.1      UGSc           17        0     en2
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              1   254107     lo0
169.254            link#7             UCS             0        0     en2
192.168.195        link#7             UCS             3        0     en2
192.168.195.1      0:27:22:67:35:ee   UHLWIi         22      397     en2   1193
192.168.195.5      127.0.0.1          UHS             0        0     lo0

More result is truncated.......

ที่อยู่ IP ของเกตเวย์อยู่ในบรรทัดแรก หนึ่งที่มีค่าเริ่มต้นที่คอลัมน์แรก

ในการแสดงเฉพาะบรรทัดผลลัพธ์ที่เลือกเราสามารถใช้คำสั่งgrepร่วมกับnetstat

netstat -rn | grep 'default'

คำสั่งนี้จะกรองและแสดงบรรทัดผลลัพธ์ที่มีค่าเริ่มต้น ในกรณีนี้คุณจะเห็นผลลัพธ์ดังต่อไปนี้:

default            192.168.195.1      UGSc           14        0     en2

หากคุณมีความสนใจในการหาเพียงที่อยู่ IP ของเกตเวย์และไม่มีอะไรอื่นคุณยังสามารถกรองผลโดยใช้awk คำสั่ง awk จับคู่รูปแบบในผลลัพธ์อินพุตและแสดงผลลัพธ์ สิ่งนี้จะมีประโยชน์เมื่อคุณใช้ผลลัพธ์ของคุณโดยตรงในบางโปรแกรมหรืองานแบตช์

netstat -rn | grep 'default' | awk '{print $2}'

คำสั่ง awk บอกให้จับคู่และพิมพ์คอลัมน์ที่สองของผลลัพธ์ในข้อความ ผลลัพธ์สุดท้ายมีลักษณะดังนี้:

192.168.195.1

ในกรณีนี้ netstat จะแสดงผลลัพธ์ทั้งหมด grep เลือกเฉพาะบรรทัดที่มี 'default' อยู่ในนั้นและ awk จะจับคู่รูปแบบเพิ่มเติมเพื่อแสดงคอลัมน์ที่สองในข้อความ

คุณสามารถใช้ route -n get default ในทำนองเดียวกันเพื่อให้ได้ผลลัพธ์ที่ต้องการ คำสั่งเต็มคือ

route -n get default | grep 'gateway' | awk '{print $2}'

คำสั่งเหล่านี้ทำงานได้ดีใน linux เช่นเดียวกับระบบ unix และ MAC OS


8

ไม่จำเป็นต้องใช้ยูทิลิตี้ grep Awk ทำได้ทั้งหมด:

    netstat -rn | awk '/default/ {print $2}'
      192.168.128.1

โปรดทราบว่าหากคุณมีบางอย่างเช่น Parallels (หรือ VPN หรือทั้งสองอย่าง) ทำงานอยู่คุณอาจเห็นรายการการกำหนดเส้นทางเริ่มต้นสองรายการขึ้นไปซึ่งจะเป็นจริงหากคุณใช้คำแนะนำ "grep" ด้านบนด้วย

    netstat -rn | awk '/default/ {print $2}'
      192.168.128.1
      link#12

และ

    netstat -rn | awk '/default/ {print $2}'                             
      utun1
      192.168.128.1
      link#12

เพื่อตั้งค่าตัวแปร (_default) เพื่อใช้งานต่อไป (สมมติว่ามีเพียงรายการเดียวสำหรับ 'default') .....

    _default=$( netstat -rn inet | awk '/default/ {print $2}' ) # I prefer $( ... ) over back-ticks

ในกรณีของเส้นทางเริ่มต้นหลายเส้นทางให้ใช้:

    netstat -rn | awk '/default/ {if ( index($6, "en") > 0 ){print $2} }'
      192.168.128.1

ตัวอย่างเหล่านี้ทดสอบใน Mavericks Terminal.app และเฉพาะสำหรับ OSX เท่านั้น ตัวอย่างเช่น * nix เวอร์ชันอื่น ๆ มักใช้ "eth" สำหรับการเชื่อมต่ออีเธอร์เน็ต / ไร้สายไม่ใช่ "en" นอกจากนี้ยังทดสอบด้วย ksh เท่านั้น เชลล์อื่น ๆ อาจต้องการไวยากรณ์ที่แตกต่างกันเล็กน้อย


3

ฉันจะใช้บางอย่างตามบรรทัดเหล่านี้ ...

 netstat -rn | grep "default" | awk '{print $2}'

เราจะบรรลุเป้าหมายนี้ได้อย่างไรในการเขียนโปรแกรม Object-c มี frameork สำหรับสิ่งนี้หรือไม่
MacDeveloper

0

การใช้การตั้งค่าระบบ:

ขั้นตอนที่ 1: คลิกไอคอน Apple (ที่ด้านบนซ้ายของหน้าจอ) แล้วเลือก System Preferences

ขั้นตอนที่ 2: คลิกเครือข่าย

ขั้นตอนที่ 3: เลือกการเชื่อมต่อเครือข่ายของคุณจากนั้นคลิกขั้นสูง

ขั้นตอนที่ 4: เลือกแท็บ TCP / IP และค้นหาที่อยู่ IP เกตเวย์ของคุณที่อยู่ถัดจากเราเตอร์

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