このコードは、すべてのネットワーク接続(ループバックを除く)の IP アドレスを出力し、ほとんどのOS X と Linux のバージョン間で移植可能です。
これは、次のようなマシンで実行されるスクリプトに特に役立ちます。
- アクティブなネットワーク アダプタが不明です。
- Wi-Fi 接続とイーサネット接続を切り替えるノートブック、および
- 複数のネットワーク接続を持つマシン。
スクリプトは次のとおりです。
/sbin/ifconfig -a | awk '/(cast)/ {print $2}' | cut -d: -f2
これは、次のようなスクリプトで変数に割り当てることができます。
myip=$(/sbin/ifconfig -a | awk '/(cast)/ {print $2}' | cut -d: -f2)
スクリプトは、次のように、ループを使用して結果を処理することにより、可能な複数のアドレスを処理できます。
if [[ -n $myip ]]; then
count=0
for i in $myip; do
myips[count]=$i # Or process as desired
((++count))
done
numIPaddresses=$count # Optional parameter, if wanted
fi
ノート:
- 「キャスト」で「ifconfig」をフィルタリングします。これは、ほとんどの OS X および Linux バージョンでも機能しながら、ループバック アドレスをフィルタリングする追加の効果があるためです。
- 最後の 'cut' 関数は、Linux で適切に機能するために必要ですが、OS X では必要ありません。ただし、OS X の結果には影響しないため、移植性のために残されています。