127.0.0.1以外のローカルホストのプライマリ(最初の)IPアドレスを返すコマンドラインソリューションを探しています。
このソリューションは、少なくともLinux(DebianおよびRedHat)およびOS X 10.7以降で動作するはずです。
ifconfig
両方で利用可能であることは承知していますが、その出力はこれらのプラットフォーム間でそれほど一貫していません。
ベストアンサー1
grep
IP アドレスをフィルタリングするために使用しますifconfig
:
ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'
または、以下を使用しますsed
:
ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'
特定のインターフェース(wlan0、eth0 など)のみに関心がある場合は、次のようにします。
ifconfig wlan0 | ...
コマンドにエイリアスを付けて、たとえばという独自のコマンドを作成.bashrc
できます。myip
alias myip="ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'"
もっと簡単な方法はhostname -I
(hostname -i
の古いバージョンについてはhostname
コメントを参照してください) です。ただし、これは Linux のみです。