Mac OSXでデフォルトゲートウェイを取得する方法


119

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

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

どんな方向の提案や正しい方向へのヒントもありがたいです。


3
SuperUserに移行しますか?
JMD、2015年

3
参考までに、ステータスバーのWiFiアイコンをクリックしてオプション+をクリックします。ゲートウェイなどの追加情報が表示されます。
PetrÚjezdský2018

回答:


189

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

route -n get default

これはGNU / Linux route -n(または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の出力を使用してルーティング情報を表示します。 ルーティングテーブル情報を表示するネットワークユーティリティのスクリーンショット

これが役に立てば幸いです:)

(*)ネットワークユーティリティは open /Applications/Utilities/Network\ Utility.app


ありがとう。Time Warnerのモデムが私のルーターが持っていたIPが必要だと判断し、ifconfigがゲートウェイについて嘘をついたとき、あなたは私を新しい家で数時間節約しました。
Chris Doggett

38

関連付けられている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アドレスは最初の行にあります。最初の列にデフォルトがあるもの。

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

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で適切に機能します。


8

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)をさらに使用できるように設定するには( '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でのみテストされています。他のシェルでは、若干異なる構文が必要になる場合があります。


3

私はこれらの線に沿って何かを使用します...

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

どのようにしてこれをobjective-cプログラミングで達成できますか?このため任意のframeorkはあります
MacDeveloper

0

システム設定の使用:

ステップ1:Appleアイコン(画面左上)をクリックし、[システム環境設定]を選択します。

ステップ2:[ネットワーク]をクリックします。

ステップ3:ネットワーク接続を選択し、[詳細]をクリックします。

ステップ4:[TCP / IP]タブを選択し、ルーターの横にリストされているゲートウェイIPアドレスを見つけます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.