それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Macが接続しているルーターのIPアドレスをコマンドで取り出す。ルーティングを取得する方法4種

ルーターIPをパパッと取り出したい。

無線ルーターのIPにアクセスしたいときに、設定→ネットワーク→無線LANとたどるのは面倒くさいですよね。

ルーターIPとはなにか?

ネットワークの用語で言えばデフォルトゲートウェイである。つまり ip コマンドでデフォルトゲートウェイを取り出せばいいのである。

冒頭のテーマは次のように換言が可能である。

ここまでの考察から、ルーターIPアドレスとは次のように考えればいい。

ルーターIPアドレスを取り出したい
→ デフォルトゲートウェイのIPを調べる
→ ルーティング・テーブルからデフォルトゲートウェイを取り出す。

ip コマンドでやる場合

macOS に限りらず、GNU Linux では一般的になった iproute2 コマンドで 、デフォルトゲートウェイを取得する

ip route | \grep -Po '(?<=default via )[\d\.]+'

ちなみに、mac でも ip コマンドは使うことができる。brew でインストールが可能。Linuxと同じ環境を実現するために入れておくと便利

Mac らしい方法

networksetup で、WiFi(en0)の設定を取得する・

networksetup -getinfo Wi-Fi | \grep -Po "(?<=Router: )[\d\.]+"

BSDコマンドの routeコマンドを使う場合。

takuya@Desktop$ sudo route get default
   route to: default
destination: default
       mask: default
    gateway: 100.114.91.252
  interface: en0
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0
takuya@Desktop$ sudo route get default | \grep -Po '(?<=gateway:).+'
 100.114.91.252

netstat コマンドを使う場合

netstatawk を組み合わせてもできますね。

takuya@Desktop$ netstat -nr | \grep -Po '(?<=default).+'  | awk '{ print $1 }'
100.114.91.252

ポイント

冒頭でも書いたけど、「ルーターのIP」を調べるという一般的に使われる話し言葉を「技術用語」でどう解釈するか。そこがこの解決方法であった。それにすぐ気づくか気づかないかで、エンジニアとしてのレベルが分かるんじゃないかな。ググってここに到達した人は僕のポエムを参考にしてほしい。

選択肢がいっぱいあるというのは素晴らしい

選択肢がいっぱいあるのは素晴らしい。Windowsにくらべコマンドの互換性やコマンド移植が進んでいるのはやっぱりMacなのかなぁ。