Cara mendapatkan gateway default di Mac OSX

119

Saya perlu mengambil gateway default di mesin Mac. Saya tahu bahwa di Linux route -n akan memberikan output yang dapat dengan mudah saya dapatkan kembali informasi ini. Namun ini tidak berfungsi di Mac OSX (Snow Leopard).

Saya juga mencoba netstat -nr | grep 'default', tetapi saya berharap untuk hasil yang lebih bersih seperti yang dihasilkan oleh route -nLinux / Unix. netstat -nrmencantumkan semua antarmuka dan gateway default untuk mereka.

Segala jenis saran atau petunjuk ke arah yang benar akan dihargai.

SThomas
sumber
3
Migrasikan ke SuperUser?
JMD
3
FYI Anda dapat Option + klik pada ikon WiFi di status bar. Ini menunjukkan informasi tambahan, termasuk gateway.
Petr Újezdský

Jawaban:

189

Anda dapat mencoba dengan:

route -n get default

Ini tidak sama dengan GNU / Linux route -n(atau bahkan ip route show) tetapi berguna untuk memeriksa informasi rute default. Selain itu, Anda dapat memeriksa rute yang akan diambil paket ke host tertentu. Misalnya

route -n get www.yahoo.com

Outputnya akan mirip dengan:

   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 -nradalah yang Anda butuhkan. Bahkan aplikasi utilitas Jaringan MacOSX (*) menggunakan output netstat untuk menampilkan informasi perutean. Tangkapan layar utilitas jaringan yang menampilkan informasi tabel perutean

Saya harap ini membantu :)

(*) Anda dapat memulai utilitas Jaringan dengan open /Applications/Utilities/Network\ Utility.app

Humber
sumber
Terima kasih. Anda baru saja menghemat beberapa jam di rumah baru ketika modem Time Warner memutuskan ia menginginkan IP yang dulu dimiliki router saya, dan ifconfig berbohong tentang gateway.
Chris Doggett
38

Untuk mendapatkan daftar alamat ip yang terkait, Anda dapat menggunakan perintah netstat

netstat -rn 

Ini memberikan daftar alamat ip yang panjang dan tidak mudah untuk menemukan bidang yang diperlukan. Hasil sampelnya adalah sebagai berikut:

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.......

Alamat ip gateway ada di baris pertama; satu dengan default di kolom pertamanya.

Untuk menampilkan hanya baris hasil yang dipilih, kita dapat menggunakan perintah grep bersama dengan netstat

netstat -rn | grep 'default'

Perintah ini memfilter dan menampilkan baris hasil yang memiliki default. Dalam hal ini, Anda dapat melihat hasil seperti berikut:

default            192.168.195.1      UGSc           14        0     en2

Jika Anda hanya tertarik untuk menemukan alamat ip gateway dan tidak ada yang lain, Anda dapat memfilter hasilnya menggunakan awk . Perintah awk mencocokkan pola dalam hasil masukan dan menampilkan keluaran. Ini dapat berguna saat Anda menggunakan hasil Anda secara langsung dalam beberapa program atau tugas batch.

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

Perintah awk memberi tahu untuk mencocokkan dan mencetak kolom kedua dari hasil di teks. Hasil akhirnya terlihat seperti ini:

192.168.195.1

Dalam kasus ini, netstat menampilkan semua hasil, grep hanya memilih baris dengan 'default' di dalamnya, dan awk selanjutnya mencocokkan pola untuk menampilkan kolom kedua dalam teks.

Anda juga bisa menggunakan route -n get default command untuk mendapatkan hasil yang diinginkan. Perintah lengkapnya adalah

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

Perintah ini bekerja dengan baik di linux serta sistem unix dan MAC OS.

Prabhu
sumber
8

Utilitas grep tidak diperlukan. Awk bisa melakukan semuanya:

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

Perhatikan bahwa jika Anda menjalankan sesuatu seperti Parallels (atau VPN, atau keduanya), Anda mungkin melihat dua atau lebih entri perutean default - itu akan benar jika Anda menggunakan saran 'grep' di atas juga.

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

dan

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

Untuk mengatur variabel (_default) untuk digunakan lebih lanjut (dengan asumsi hanya satu entri untuk 'default') .....

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

Dalam kasus beberapa rute default, gunakan:

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

Contoh berikut diuji di Mavericks Terminal.app dan khusus untuk OSX saja. Misalnya, versi * nix lainnya sering menggunakan 'eth' untuk koneksi ethernet / nirkabel, bukan 'en'. Ini juga hanya diuji dengan ksh. Kerang lain mungkin memerlukan sintaks yang sedikit berbeda.

Concertogr
sumber
3

Saya akan menggunakan sesuatu seperti ini ...

 netstat -rn | grep "default" | awk '{print $2}'
Robert Northard
sumber
Bagaimana kita bisa mencapai ini dalam pemrograman objektif-c. Apakah ada kerangka kerja untuk ini
MacDeveloper
0

Menggunakan Preferensi Sistem:

Langkah 1: Klik ikon Apple (di kiri atas layar) dan pilih System Preferences.

Langkah 2: Klik Jaringan.

Langkah 3: Pilih koneksi jaringan Anda dan kemudian klik Advanced.

Langkah 4: Pilih tab TCP / IP dan temukan alamat IP gateway Anda di sebelah Router.

James Nick
sumber