So erhalten Sie das Standard-Gateway unter Mac OSX

119

Ich muss das Standard-Gateway auf einem Mac-Computer abrufen. Ich weiß, dass in Linux route -n eine Ausgabe liefert, von der ich diese Informationen leicht abrufen kann. Dies funktioniert jedoch nicht unter Mac OS X (Snow Leopard).

Ich habe es auch versucht netstat -nr | grep 'default', aber ich hoffte auf eine sauberere Ausgabe wie die von route -nLinux / Unix. netstat -nrlistet alle Schnittstellen und das Standard-Gateway für sie auf.

Jede Art von Vorschlag oder ein Hinweis in die richtige Richtung wird geschätzt.

SThomas
quelle
3
Zu SuperUser migrieren?
JMD
3
Zu Ihrer Information können Sie bei gedrückter Wahltaste auf das WLAN-Symbol in der Statusleiste klicken. Hier werden zusätzliche Informationen angezeigt, einschließlich Gateway.
Petr Újezdský

Antworten:

189

Sie können versuchen mit:

route -n get default

Es ist nicht dasselbe wie das von GNU / Linux route -n(oder sogar ip route show), aber es ist nützlich, um die Standardrouteninformationen zu überprüfen. Sie können auch die Route überprüfen, die Pakete zu einem bestimmten Host nehmen. Z.B

route -n get www.yahoo.com

Die Ausgabe wäre ähnlich wie:

   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 -nrist was Sie brauchen. Selbst die Network Utility App (*) von MacOSX verwendet die Ausgabe von netstat, um Routing-Informationen anzuzeigen. Screenshot des Netzwerkdienstprogramms mit Informationen zur Routing-Tabelle

Ich hoffe das hilft :)

(*) Sie können das Netzwerkdienstprogramm mit starten open /Applications/Utilities/Network\ Utility.app

Humber
quelle
Vielen Dank. Sie haben mir gerade ein paar Stunden im neuen Haus gespart, als das Modem von Time Warner entschied, dass es die IP-Adresse meines Routers haben soll, und ifconfig über das Gateway gelogen hat.
Chris Doggett
38

Um die Liste der zugeordneten IP-Adressen abzurufen, können Sie den Befehl netstat verwenden

netstat -rn 

Dies ergibt eine lange Liste von IP-Adressen und es ist nicht einfach, das erforderliche Feld zu finden. Das Beispielergebnis lautet wie folgt:

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

Die IP-Adresse des Gateways befindet sich in der ersten Zeile. eine mit Standard in der ersten Spalte.

Um nur die ausgewählten Ergebniszeilen anzuzeigen, können wir den Befehl grep zusammen mit netstat verwenden

netstat -rn | grep 'default'

Dieser Befehl filtert und zeigt die Ergebniszeilen mit Standard an. In diesem Fall sehen Sie das folgende Ergebnis:

default            192.168.195.1      UGSc           14        0     en2

Wenn Sie nur die IP-Adresse des Gateways und sonst nichts finden möchten, können Sie das Ergebnis mit awk weiter filtern . Der Befehl awk stimmt mit dem Muster im Eingabeergebnis überein und zeigt die Ausgabe an. Dies kann nützlich sein, wenn Sie Ihr Ergebnis direkt in einem Programm- oder Stapeljob verwenden.

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

Der Befehl awk weist an , die zweite Spalte des Ergebnisses im Text abzugleichen und auszudrucken . Das Endergebnis sieht also so aus:

192.168.195.1

In diesem Fall zeigt netstat alle Ergebnisse an, grep wählt nur die Zeile mit 'default' aus und awk stimmt weiter mit dem Muster überein, um die zweite Spalte im Text anzuzeigen.

Sie können auch den Befehl route -n get default verwenden, um das gewünschte Ergebnis zu erhalten. Der vollständige Befehl lautet

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

Diese Befehle funktionieren sowohl unter Linux als auch unter Unix-Systemen und MAC OS.

Prabhu
quelle
8

Das Dienstprogramm grep wird nicht benötigt. Awk kann alles:

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

Beachten Sie, dass bei Ausführung von Parallels (oder einem VPN oder beiden) möglicherweise zwei oder mehr Standard-Routing-Einträge angezeigt werden. Dies gilt auch, wenn Sie den obigen Vorschlag "grep" verwenden.

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

und

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

So legen Sie eine Variable (_default) für die weitere Verwendung fest (vorausgesetzt, nur ein Eintrag für 'default') .....

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

Bei mehreren Standardrouten verwenden Sie:

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

Diese Beispiele wurden in Mavericks Terminal.app getestet und sind nur für OSX spezifisch. Beispielsweise verwenden andere * nix-Versionen häufig 'eth' für Ethernet- / Wireless-Verbindungen, nicht 'en'. Dies wird auch nur mit ksh getestet. Andere Shells benötigen möglicherweise eine etwas andere Syntax.

Concertogr
quelle
3

Ich würde etwas in diese Richtung verwenden ...

 netstat -rn | grep "default" | awk '{print $2}'
Robert Northard
quelle
Wie können wir dies in der Ziel-C-Programmierung erreichen? Gibt es einen Rahmen dafür
MacDeveloper
0

Verwenden der Systemeinstellungen:

Schritt 1: Klicken Sie auf das Apple-Symbol (oben links auf dem Bildschirm) und wählen Sie Systemeinstellungen.

Schritt 2: Klicken Sie auf Netzwerk.

Schritt 3: Wählen Sie Ihre Netzwerkverbindung aus und klicken Sie dann auf Erweitert.

Schritt 4: Wählen Sie die Registerkarte TCP / IP und suchen Sie Ihre Gateway-IP-Adresse neben Router.

James Nick
quelle