1. ホーム
  2. bash

[解決済み] LinuxとOS XでローカルマシンのプライマリIPアドレスを取得する方法は?[クローズド]

2022-03-24 12:44:38

質問

127.0.0.1以外のローカルホストのプライマリ(最初の)IPアドレスを返してくれるコマンドラインの解決策を探しています。

少なくともLinux (DebianとRedHat)とOS X 10.7+で動作することが必要です。

私が認識しているのは ifconfig は両方のプラットフォームで利用可能ですが、その出力はこれらのプラットフォーム間であまり一貫していません。

どのように解決するのですか?

使用方法 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上での話です。