WindowsでプライベートIPアドレスをスクリプトで取得する

2020年02月23日

Git for Windowの入ったWindows 10で、スクリプト上でプライベートIPアドレスを取得しようと思ったんですが、なかなかいい方法が見つからなくて試行錯誤。

最初に試したのがipconfigから抽出する方法。

ipconfig | grep -a ': 192.' | cut -d: -f2 | tr -d ' '

“192"を探しているのは"IPv4"だとDockerNAT等ほかのアダプターを探しにいってしまうからで、grep -a とかやってるのはipconfigの日本語出力がバイナリと認識されてしまったためで(このあたり詳しくは追ってません)、sedにも繋げられなかったのでcutとtrでなんとかしてます。なんだかいかにもあぶなさそう……。

というところで、@shienaさんがnetshを使う方法を教えてくださいました!

netsh interface ipv4 show ipaddresses | awk '/Dhcp/{print $5}

こちらのほうが確実そう! ただ、netshがこういうステータスなんですね。

$ netsh
netsh>interface
Windows の将来のバージョンで、TCP/IP の Netsh 機能が削除される可能性が
あります。

現在 TCP/IP の構成および管理に netsh を使用している場合は、Windows PowerShell に
移行することをお勧めします。

で、PowerShellだとこんな感じでストレートに行けました。

(Get-NetIPAddress -PrefixOrigin Dhcp).IPAddress

けど、PowerShell起動が遅いのであまり使いたくない……とりあえず備忘録です。

(書いた人: こりん

技術ブログトップへ