ローカルホストのIP

ローカルホストのIP

LinuxインスタンスはIPアドレスをどのように決定しますか?

つまり、127.0.0.1ではありません。

これはファイルに保存されていますか?それとも呼び出されるたびにifconfigは何とか計算されますか?

私は努力したことを示すためにこの問題を解決しましたが、真剣に適用するものではありません。

sudo ifconfig | head -n 2 | tail -n 1 | tr -s " " | tr " " ":" | cut -d":" -f 4

ベストアンサー1

あなたの質問には根本的な欠陥があります。まず、ホストが複数のアドレス(複数のインターフェイスなど)を持つことも、インターフェイスごとに複数のアドレスを持つこともできます。これは、世界中で接続されているすべてのホストが少なくとも二つ住所

第二に、シェルでこれを行うための「最も良い」方法はシステムによって異なります。

Linux:

/sbin/ip addr show eth0 | awk -F"[ /]+" '/inet / {print $3}'

>= Solaris 11:

ipadm show-addr net0/v4 | awk -F"[ /]+" '/ok/ {print $5}'

Mac OS X/ダーウィン:

ipconfig getifaddr en0

最も低い共通分母を取得して使用してもifconfig出力形式が変更される可能性があるため、一貫性はありません。ただし、例をクリーンアップするには、次のコマンドを使用します。

ifconfig eth0 | awk -F"[ :]+" '/inet / {print $4}'

Shellの代わりにPerl、Ruby、Javaなどの高度な言語を使用している場合、各言語にはカーネルからこのデータをインポートする独自の方法があります。調べるのは皆さんにお任せします。

おすすめ記事