Mac OSX'te varsayılan ağ geçidi nasıl alınır


119

Bir Mac makinede varsayılan ağ geçidini almam gerekiyor. Linux rotasında -n'nin bu bilgiyi kolayca alabileceğim bir çıktı vereceğini biliyorum. Ancak bu, Mac OSX'te (Snow Leopard) çalışmıyor.

Ben de denedim netstat -nr | grep 'default'ama route -nLinux / Unix'te üretilene benzer daha temiz bir çıktı umuyordum . netstat -nrtüm arayüzleri ve bunlar için varsayılan ağ geçidini listeler.

Doğru yönde her türlü öneri veya ipucu takdir edilecektir.


3
SuperUser'a geçilsin mi?
— JMD

3
Bilginize, Option + durum çubuğundaki WiFi simgesine tıklayabilirsiniz. Bu, ağ geçidi dahil olmak üzere ek bilgileri gösterir.
— Petr Újezdský

Yanıtlar:


189

Şunları deneyebilirsiniz:

route -n get default

GNU / Linux ile aynı değildir route -n(veya hatta ip route show), ancak varsayılan rota bilgisini kontrol etmek için kullanışlıdır. Ayrıca, paketlerin belirli bir ana makineye gideceği yolu da kontrol edebilirsiniz. Örneğin

route -n get www.yahoo.com

Çıktı şuna benzer olacaktır:

   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 -nrihtiyacınız olan şey. MacOSX'in Ağ yardımcı programı uygulaması (*) bile yönlendirme bilgilerini göstermek için netstat çıktısını kullanır. Yönlendirme tablosu bilgilerini gösteren ağ yardımcı programı ekran görüntüsü

Umarım bu yardımcı olur :)

(*) Ağ yardımcı programını şu şekilde başlatabilirsiniz: open /Applications/Utilities/Network\ Utility.app


Teşekkürler. Time Warner'ın modemi yönlendiricimin sahip olduğu IP'yi istediğine karar verdiğinde ve ifconfig ağ geçidi hakkında yalan söylediğinde yeni evde beni birkaç saat kurtardın.
— Chris Doggett

38

İlişkili ip adreslerinin listesini almak için netstat komutunu kullanabilirsiniz.

netstat -rn 

Bu, uzun bir ip adresleri listesi verir ve gerekli alanı bulmak kolay değildir. Örnek sonuç aşağıdaki gibidir:

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

Ağ geçidinin ip adresi ilk satırdadır; ilk sütununda varsayılan olan biri.

Yalnızca seçilen sonuç satırlarını görüntülemek için netstat ile birlikte grep komutunu kullanabiliriz.

netstat -rn | grep 'default'

Bu komut, varsayılan olan sonuç satırlarını filtreler ve görüntüler. Bu durumda aşağıdaki gibi sonuçlar görebilirsiniz:

default            192.168.195.1      UGSc           14        0     en2

Yalnızca ağ geçidinin ip adresini bulmakla ilgileniyorsanız ve başka hiçbir şey yoksa, awk kullanarak sonucu daha fazla filtreleyebilirsiniz . Awk komutu giriş sonucundaki desenle eşleşir ve çıktıyı görüntüler. Bu, sonucunuzu doğrudan bazı programlarda veya toplu işlerde kullandığınızda yararlı olabilir.

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

Awk komutu , metindeki sonucun ikinci sütununu eşleştirip yazdırmayı söyler . Nihai sonuç şu şekilde görünür:

192.168.195.1

Bu durumda, netstat tüm sonucu görüntüler, grep yalnızca içinde 'varsayılan' olan satırı seçer ve awk, metindeki ikinci sütunu görüntülemek için desenle daha fazla eşleşir.

Gerekli sonucu almak için benzer şekilde route -n get default komutunu kullanabilirsiniz. Tam komut

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

Bu komutlar linux, unix sistemleri ve MAC OS'de iyi çalışır.


8

Grep yardımcı programına gerek yoktur. Awk hepsini yapabilir:

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

Çalışan Parallels (veya VPN veya her ikisi) gibi bir şeyiniz varsa, iki veya daha fazla varsayılan yönlendirme girişi görebileceğinizi unutmayın - yukarıdaki 'grep' önerisini kullanırsanız da doğru olacaktır.

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

ve

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

Daha sonra kullanmak üzere bir değişken (_default) ayarlamak için ('varsayılan' için yalnızca bir giriş varsayılarak) .....

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

Birden fazla varsayılan yol olması durumunda şunları kullanın:

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

Bu örnekler Mavericks Terminal.app'de test edilmiştir ve yalnızca OSX'e özeldir. Örneğin, diğer * nix sürümleri ethernet / kablosuz bağlantılar için sıklıkla 'eth' kullanır, 'en' değil. Bu ayrıca sadece ksh ile test edilir. Diğer kabuklar biraz farklı bir sözdizimine ihtiyaç duyabilir.


3

Bu satırlarda bir şey kullanırdım ...

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

Bunu objektif-c programlamada nasıl başarabiliriz? Bunun için herhangi bir çerçeve var mı
— MacDeveloper

0

Sistem Tercihlerini Kullanma:

Adım 1: Apple simgesine (ekranın sol üst köşesinde) tıklayın ve Sistem Tercihleri'ni seçin.

Adım 2: Ağ'a tıklayın.

Adım 3: Ağ bağlantınızı seçin ve ardından Gelişmiş'i tıklayın.

Adım 4: TCP / IP sekmesini seçin ve Yönlendiricinin yanında listelenen ağ geçidi IP adresinizi bulun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.