Jak uzyskać domyślną bramę w systemie Mac OSX

119

Muszę pobrać domyślną bramę na komputerze Mac. Wiem, że w Linuksie route -n da wynik, z którego mogę łatwo pobrać te informacje. Jednak to nie działa w systemie Mac OSX (Snow Leopard).

Próbowałem też netstat -nr | grep 'default', ale liczyłem na czystszy wynik, taki jak ten produkowany przez route -nLinuksa / Uniksa. netstat -nrwyświetla listę wszystkich interfejsów i ich domyślną bramę.

Każda sugestia lub wskazówka we właściwym kierunku będzie mile widziana.

SThomas
źródło
3
Migrować do SuperUser?
JMD
3
Do Twojej wiadomości możesz Option + kliknij ikonę WiFi na pasku stanu. Pokazuje dodatkowe informacje, w tym bramę.
Petr Újezdský

Odpowiedzi:

189

Możesz spróbować z:

route -n get default

To nie to samo, co GNU / Linux route -n(lub nawet ip route show), ale jest przydatne do sprawdzania informacji o domyślnej trasie. Możesz także sprawdzić trasę, którą paczki pokonają do konkretnego hosta. Na przykład

route -n get www.yahoo.com

Wynik byłby podobny do:

   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 -nrjest tym, czego potrzebujesz. Nawet aplikacja narzędziowa sieci MacOSX (*) wykorzystuje dane wyjściowe netstat do wyświetlania informacji o routingu. Zrzut ekranu narzędzia sieciowego wyświetlający informacje z tablicy routingu

Mam nadzieję, że to pomoże :)

(*) Narzędzie sieciowe można uruchomić za pomocą open /Applications/Utilities/Network\ Utility.app

Humber
źródło
Dzięki. Zaoszczędziłeś mi kilka godzin w nowym domu, kiedy modem Time Warner zdecydował, że chce adresu IP, który miał mój router, a ifconfig kłamał na temat bramy.
Chris Doggett
38

Aby uzyskać listę powiązanych adresów IP, możesz użyć polecenia netstat

netstat -rn 

Daje to długą listę adresów IP i nie jest łatwo znaleźć wymagane pole. Przykładowy wynik jest następujący:

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

Adres IP bramy znajduje się w pierwszej linii; jeden z wartością domyślną w pierwszej kolumnie.

Aby wyświetlić tylko wybrane wiersze wyniku, możemy użyć polecenia grep wraz z netstatem

netstat -rn | grep 'default'

To polecenie filtruje i wyświetla te wiersze wyniku, które mają wartość domyślną. W takim przypadku możesz zobaczyć następujący wynik:

default            192.168.195.1      UGSc           14        0     en2

Jeśli chcesz znaleźć tylko adres IP bramy i nic więcej, możesz dalej filtrować wynik za pomocą awk . Polecenie awk dopasowuje wzorzec w wyniku wejściowym i wyświetla wyjście. Może to być przydatne, gdy używasz wyniku bezpośrednio w jakimś programie lub zadaniu wsadowym.

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

Polecenie awk nakazuje dopasować i wydrukować drugą kolumnę wyniku w tekście. Ostateczny wynik wygląda więc następująco:

192.168.195.1

W tym przypadku netstat wyświetla cały wynik, grep wybiera tylko wiersz zawierający słowo „default”, a awk dodatkowo dopasowuje wzorzec, aby wyświetlić drugą kolumnę w tekście.

Możesz w podobny sposób użyć polecenia route -n get default, aby uzyskać wymagany wynik. Pełne polecenie to

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

Te polecenia działają dobrze w systemie Linux, a także w systemach unix i MAC OS.

Prabhu
źródło
8

Narzędzie grep nie jest potrzebne. Awk może to wszystko:

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

Zwróć uwagę, że jeśli masz uruchomione coś takiego jak Parallels (lub VPN, lub oba), możesz zobaczyć dwa lub więcej domyślnych wpisów routingu - będzie to prawda, jeśli użyjesz również powyższej sugestii „grep”.

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

i

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

Aby ustawić zmienną (_default) do dalszego użytku (zakładając tylko jeden wpis jako „domyślny”) .....

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

W przypadku wielu tras domyślnych użyj:

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

Te przykłady zostały przetestowane w Mavericks Terminal.app i są specyficzne tylko dla OSX. Na przykład inne wersje * nix często używają „eth” do połączeń Ethernet / bezprzewodowych, a nie „en”. Jest to również testowane tylko z ksh. Inne powłoki mogą wymagać nieco innej składni.

Concertogr
źródło
3

Użyłbym czegoś w tym stylu ...

 netstat -rn | grep "default" | awk '{print $2}'
Robert Northard
źródło
Jak możemy to osiągnąć w programowaniu CEL. Czy jest do tego jakaś rama
MacDeveloper
0

Korzystanie z Preferencji systemowych:

Krok 1: Kliknij ikonę Apple (w lewym górnym rogu ekranu) i wybierz Preferencje systemowe.

Krok 2: Kliknij Sieć.

Krok 3: Wybierz połączenie sieciowe, a następnie kliknij Zaawansowane.

Krok 4: Wybierz kartę TCP / IP i znajdź adres IP swojej bramy wymieniony obok opcji Router.

James Nick
źródło