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.