128

Macマシンでデフォルトゲートウェイを取得する必要があります。Linuxではroute-nが出力を提供し、そこからこの情報を簡単に取得できることを知っています。ただし、これはMac OSX(Snow Leopard)では機能しません。

私も試しましたが、Linux/Unixnetstat -nr | grep 'default'で生成されたようなよりクリーンな出力を望んでいました。すべてのインターフェースとそれらのデフォルトゲートウェイを一覧表示します。route -nnetstat -nr

あらゆる種類の提案や正しい方向へのヒントをいただければ幸いです。

4

5 に答える 5

207

あなたは試すことができます:

route -n get default

route -nGNU/Linux (または)と同じではありませんがip route show、デフォルトのルート情報を確認するのに役立ちます。また、パッケージが特定のホストにたどるルートを確認することもできます。例えば

route -n get www.yahoo.com

出力は次のようになります。

   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

私見netstat -nrはあなたが必要とするものです。MacOSX のネットワーク ユーティリティ アプリ (*) でさえ、netstat の出力を使用してルーティング情報を表示します。 ルーティング テーブル情報を表示するネットワーク ユーティリティのスクリーンショット

これが役立つことを願っています:)

(*) Network utility を次のコマンドで起動できますopen /Applications/Utilities/Network\ Utility.app

于 2011-10-02T14:48:28.580 に答える
41

関連する IP アドレスのリストを取得するには、 netstatコマンドを使用できます。

netstat -rn 

これにより、IP アドレスの長いリストが得られ、必要なフィールドを見つけるのは容易ではありません。サンプル結果は次のとおりです。

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

ゲートウェイの IP アドレスは最初の行にあります。最初の列にデフォルトがあるもの。

結果の選択された行のみを表示するには、grepコマンドとnetstatを使用できます。

netstat -rn | grep 'default'

このコマンドは、デフォルトを持つ結果の行をフィルタリングして表示します。この場合、次のような結果が表示されます。

default            192.168.195.1      UGSc           14        0     en2

ゲートウェイの IP アドレスだけを見つけたい場合は、awkを使用して結果をさらにフィルタリングできます。awk コマンドは、入力結果のパターンを照合し、出力を表示します。これは、何らかのプログラムまたはバッチ ジョブで結果を直接使用する場合に役立ちます。

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

awk コマンドは、結果の 2 列目を照合してテキストに出力するように指示します。したがって、最終結果は次のようになります。

192.168.195.1

この場合、netstat はすべての結果を表示し、grep は「default」を含む行のみを選択し、awk はさらにパターンを照合してテキストの 2 列目を表示します。

同様に route -n get default コマンドを使用して、必要な結果を取得できます。完全なコマンドは

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

これらのコマンドは、Linux だけでなく UNIX システムや MAC OS でもうまく機能します。

于 2013-07-14T05:15:59.117 に答える
9

grep ユーティリティは必要ありません。Awk ですべて実行できます。

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

Parallels (または VPN、またはその両方) のようなものを実行している場合、2 つ以上のデフォルト ルーティング エントリが表示される場合があることに注意してください。上記の「grep」の提案を使用する場合も同様です。

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

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

さらに使用するために変数 (_default) を設定するには (「デフォルト」のエントリが 1 つだけであると仮定) .....

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

複数のデフォルト ルートの場合は、次を使用します。

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

これらの例は Mavericks Terminal.app でテストされており、OSX のみに固有のものです。たとえば、他の *nix バージョンでは、イーサネット/ワイヤレス接続に「en」ではなく「eth」が頻繁に使用されます。これも ksh でのみテストされています。他のシェルでは、わずかに異なる構文が必要になる場合があります。

于 2013-12-09T16:09:28.760 に答える