web-dev-qa-db-ja.com

bashでCentos 7のサーバーのIPアドレスを取得する方法

以前は、bashで次のコマンドを使用して、サーバーのメインIPを見つけました。

ipaddr=$(/sbin/ifconfig|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}' | grep -v '127.0.0.1')

しかし、centos7では、ifconfigが使用できず、yum install net-toolsを使用してifconfigをインストールしてもコマンドが機能しなくなるため、機能しなくなりました。

CentOS 7の同等のコマンドは何ですか

どうもありがとう

41
user2650277

hostname コマンドを使用できます:

ipaddr=$(hostname -I)

-i, --ip-address:ホストのIPアドレスを表示します。これは、ホスト名を解決できる場合にのみ機能することに注意してください。

-I, --all-ip-addresses:ホストのすべてのネットワークアドレスを表示します。このオプションは、すべてのネットワークインターフェイスで設定されたすべてのアドレスを列挙します。ループバックインターフェイスとIPv6リンクローカルアドレスは省略されています。オプション-iとは異なり、このオプションは名前解決に依存しません。出力の順序について何も仮定しないでください。

83
Alexander

コンソールでコマンドip addrを入力します

enter image description here

26
Rijul Sudhir

Centos 7とコマンドを使用しています

ip a

仕事をするのに十分です。

enter image description here

20
Siraj Alam

このようなもの-@ maarten-vanlinthoutの答えのリフ

ip  -f inet a show eth0| grep inet| awk '{ print $2}' | cut -d/ -f1
3
datakid
SERVER_IP="$(ip addr show ens160 | grep 'inet ' | cut -f2 | awk '{ print $2}')"

ens160をインターフェイス名に置き換えます

2

次のような簡単なコマンドを実行できます

curl ifconfig.co

curl ifconfig.me

wget -qO - icanhazip.com
1
Kernel

実際、外部ソースを使用したくない(または使用できない)場合は、以下をお勧めします。

DEVICE=$(ls -l /sys/class/net | awk '$NF~/pci0/ { print $(NF-2); exit }')
IPADDR=$(ip -br address show dev $DEVICE | awk '{print substr($3,1,index($3,"/")-1);}')

最初の行はPCIバス上の最初のネットワークデバイスの名前を取得し、2行目はそのIPアドレスを提供します。

ところでps ... | grep ... | awk ...は悪臭を放ちます。 awkはgrepを必要としません。

1
Tuxinose

外部サーバーのIPアドレスを取得する最も信頼できる方法は、外部サービスを使用することだと思います。

ipaddr=$(curl -s http://whatismyip.akamai.com/)

0
user2650277

少し遅れて

curl -4 icanhazip.com 

サーバーのプライマリIPアドレスを返します。

0
William Turner