Macのターミナルでネットワーク情報を一括で取得したい
Windowsのコマンドプロンプトでは、ipconfig /all あたりで、IPアドレス、デフォルトゲートウェイ、DNSサーバを全て確認することができる。

これは便利。
Macでは ifconfigをよく使っていて、 IPアドレスは出るものの、デフォルトゲートウェイとDNSサーバが出ずに不便に感じていた。
ChatGPT先生に聞きながらスクリプト化してみた。
#!/bin/bash
# インターフェース指定(引数がなければ en0)
IFACE=${1:-en0}
echo "=== ネットワーク情報 for $IFACE ==="
# IPアドレス取得
echo "--- IP アドレス ---"
ipconfig getifaddr "$IFACE"
# デフォルトゲートウェイ取得
echo "--- デフォルトゲートウェイ ---"
route get default | grep 'gateway'
# DNSサーバー取得
echo "--- DNS サーバー ---"
# 重複表示される
#scutil --dns | awk '/nameserver/ {print $0}'
# IPだけにするのと、重複させない
scutil --dns | awk '/nameserver/ {print $NF}' | sort | uniq
出力結果は画像で。

スクリプトのポイントは実行時引数にインターフェースを指定できること。
指定しないときのデフォルトはen0。
DNSサーバの標準では、下記のように出る。
resolver #1
nameserver[0] : 2404:1a8:7f01:b::3
nameserver[1] : 2404:1a8:7f01:a::3
nameserver[2] : 192.168.100.1
if_index : 14 (en0)
flags : Scoped, Request A records, Request AAAA records
reach : 0x00000002 (Reachable)
nameserver[2] みたいな項目名部分を省くために awk を使用し、リゾルバ毎に複数出るのをsort | uniq で重複を除去している。