it-swarm.com.de

So erhalten Sie das Standard-Gateway unter Mac OSX

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

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

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

116
SThomas

Sie können versuchen mit:

route -n get default

Es ist nicht dasselbe wie 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 -nr Ist das, was Sie brauchen. Sogar die MacOSX Network Utility App (*) verwendet die Ausgabe von netstat, um Routing-Informationen anzuzeigen. Network utility screenshot displaying routing table information

Ich hoffe das hilft :)

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

182
Humber

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

netstat -rn 

Dies gibt eine lange Liste von IP-Adressen und es ist nicht einfach, das erforderliche Feld zu finden. Das Beispielergebnis ist 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 steht in der ersten Zeile. eine mit Standardeinstellung 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 Standardwerten an. In diesem Fall sehen Sie folgendes Ergebnis:

default            192.168.195.1      UGSc           14        0     en2

Wenn Sie nur die IP-Adresse des Gateways und nichts anderes 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 abzugleichen und auszudrucken des Ergebnisses im Text. 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' 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.

36
Prabhu

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

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

Beachten Sie, dass bei der Ausführung von Parallels (oder einem VPN oder beidem) 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 (unter der Annahme, dass nur ein Eintrag für 'default' vorhanden ist) .....

    _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 gelten nur für OSX. Beispielsweise verwenden andere * nix-Versionen häufig 'eth' für Ethernet-/Drahtlosverbindungen, nicht 'en'. Dies wird auch nur mit ksh getestet. Andere Shells benötigen möglicherweise eine etwas andere Syntax.

8
Concertogr

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

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