Come ottenere il gateway predefinito in Mac OSX


119

Devo recuperare il gateway predefinito su una macchina Mac. So che in Linux route -n darà un output dal quale posso facilmente recuperare queste informazioni. Tuttavia questo non funziona in Mac OSX (Snow Leopard).

Ho anche provato netstat -nr | grep 'default', ma speravo in un output più pulito come quello prodotto da route -nin Linux / Unix. netstat -nrelenca tutte le interfacce e il gateway predefinito per esse.

Qualsiasi tipo di suggerimento o suggerimento nella giusta direzione sarà apprezzato.


3
Migrare a SuperUser?
JMD

3
Cordiali saluti, puoi Opzione + fare clic sull'icona WiFi sulla barra di stato. Questo mostra informazioni aggiuntive, incluso il gateway.
Petr Újezdský

Risposte:


189

Puoi provare con:

route -n get default

Non è lo stesso di GNU / Linux route -n(o addirittura ip route show) ma è utile per controllare le informazioni sul percorso predefinito. Inoltre, puoi controllare il percorso che i pacchetti prenderanno per un determinato host. Per esempio

route -n get www.yahoo.com

L'output sarebbe simile a:

   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è quello che ti serve. Anche l'app di utilità di rete di MacOSX (*) utilizza l'output di netstat per mostrare le informazioni di instradamento. Schermata dell'utilità di rete che mostra le informazioni sulla tabella di routing

Spero che aiuti :)

(*) È possibile avviare l'utilità di rete con open /Applications/Utilities/Network\ Utility.app


Grazie. Mi hai appena risparmiato qualche ora nella nuova casa quando il modem di Time Warner ha deciso che voleva l'IP che aveva il mio router e ifconfig ha mentito sul gateway.
Chris Doggett

38

Per ottenere l'elenco degli indirizzi IP associati, è possibile utilizzare il comando netstat

netstat -rn 

Questo fornisce un lungo elenco di indirizzi IP e non è facile trovare il campo richiesto. Il risultato del campione è il seguente:

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

L'indirizzo IP del gateway è nella prima riga; uno con il valore predefinito nella prima colonna.

Per visualizzare solo le righe di risultato selezionate, possiamo usare il comando grep insieme a netstat

netstat -rn | grep 'default'

Questo comando filtra e visualizza quelle righe di risultato che hanno l'impostazione predefinita. In questo caso, puoi vedere il risultato come segue:

default            192.168.195.1      UGSc           14        0     en2

Se sei interessato a trovare solo l'indirizzo ip del gateway e nient'altro puoi filtrare ulteriormente il risultato usando awk . Il comando awk corrisponde al pattern nel risultato dell'input e visualizza l'output. Ciò può essere utile quando si utilizza il risultato direttamente in un programma o in un lavoro batch.

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

Il comando awk dice di abbinare e stampare la seconda colonna del risultato nel testo. Il risultato finale appare quindi così:

192.168.195.1

In questo caso, netstat mostra tutti i risultati, grep seleziona solo la riga con "default" e awk fa corrispondere ulteriormente il modello per visualizzare la seconda colonna nel testo.

Allo stesso modo puoi usare route -n get default command per ottenere il risultato richiesto. Il comando completo è

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

Questi comandi funzionano bene in Linux, nei sistemi Unix e nel sistema operativo MAC.


8

L'utilità grep non è necessaria. Awk può fare tutto:

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

Nota che se hai qualcosa come Parallels (o una VPN, o entrambi) in esecuzione, potresti vedere due o più voci di instradamento predefinite - sarà vero anche se usi il suggerimento "grep" sopra.

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

e

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

Per impostare una variabile (_default) per un ulteriore utilizzo (assumendo una sola voce per 'default') .....

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

In caso di più percorsi predefiniti utilizzare:

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

Questi esempi sono stati testati in Mavericks Terminal.app e sono specifici solo per OSX. Ad esempio, altre versioni * nix usano spesso "eth" per le connessioni ethernet / wireless, non "en". Anche questo è testato solo con ksh. Altre shell potrebbero richiedere una sintassi leggermente diversa.


3

Userei qualcosa del genere ...

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

Come possiamo raggiungere questo obiettivo nella programmazione dell'obiettivo c. C'è un frameork per questo
MacDeveloper

0

Utilizzo delle preferenze di sistema:

Passaggio 1: fare clic sull'icona Apple (in alto a sinistra dello schermo) e selezionare Preferenze di Sistema.

Passaggio 2: fare clic su Rete.

Passaggio 3: selezionare la connessione di rete e quindi fare clic su Avanzate.

Passaggio 4: selezionare la scheda TCP / IP e trovare l'indirizzo IP del gateway elencato accanto a Router.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.