ルーター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 コマンドを使う場合
takuya@Desktop$ netstat -nr | \grep -Po '(?<=default).+' | awk '{ print $1 }' 100.114.91.252
ポイント
冒頭でも書いたけど、「ルーターのIP」を調べるという一般的に使われる話し言葉を「技術用語」でどう解釈するか。そこがこの解決方法であった。それにすぐ気づくか気づかないかで、エンジニアとしてのレベルが分かるんじゃないかな。ググってここに到達した人は僕のポエムを参考にしてほしい。
選択肢がいっぱいあるというのは素晴らしい
選択肢がいっぱいあるのは素晴らしい。Windowsにくらべコマンドの互換性やコマンド移植が進んでいるのはやっぱりMacなのかなぁ。