Macマシンでデフォルトゲートウェイを取得する必要があります。 Linuxのroute -nは、この情報を簡単に取得できる出力を提供することを知っています。ただし、これはMac OSX(Snow Leopard)では機能しません。
netstat -nr | grep 'default'
も試しましたが、Linux/Unixのroute -n
によって生成されるような、よりクリーンな出力を期待していました。 netstat -nr
は、すべてのインターフェイスとそれらのデフォルトゲートウェイをリストします。
正しい方向へのあらゆる種類の提案やヒントを歓迎します。
あなたは試すことができます:
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のネットワークユーティリティapp(*)でさえ、netstatの出力を使用してルーティング情報を表示します。
これが役立つことを願っています:)
(*)open /Applications/Utilities/Network\ Utility.app
でネットワークユーティリティを起動できます
関連する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}'
これらのコマンドは、UNIXシステムとMAC OSだけでなく、Linuxでもうまく機能します。
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でのみテストされます。他のシェルでは、わずかに異なる構文が必要になる場合があります。
これらの線に沿って何かを使用します...
netstat -rn | grep "default" | awk '{print $2}'