如何在bash中获取Centos 7上服务器的IP地址

问题描述 投票:38回答:10

以前我在bash中使用以下命令来查找我的服务器的主ip

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

但是在centos7中它不再有效,因为ifconfig不可用,即使我使用ifconfig安装yum install net-tools命令也不再有效

centos 7的等效命令是什么

非常感谢

bash ip-address centos7
10个回答
79
投票

你可以使用hostname命令:

ipaddr=$(hostname -I)

-i, --ip-address:显示主机的IP地址。请注意,仅当可以解析主机名时,此方法才有效。

-I, --all-ip-addresses:显示主机的所有网络地址。此选项枚举所有网络接口上的所有已配置地址。省略了环回接口和IPv6链路本地地址。与选项-i相反,此选项不依赖于名称解析。不要对输出的顺序做任何假设。


-1
投票

运行此命令以显示ip4和ip6:

ifconfig eth0 | grep inet | awk '{print $2}' | cut -d/ -f1

26
投票

在控制台输入命令ip addr

enter image description here


20
投票

我正在使用Centos 7和命令

ip a

足以完成这项工作。

enter image description here


3
投票

像这样的事情 - @ maarten-vanlinthout的回答

ip  -f inet a show eth0| grep inet| awk '{ print $2}' | cut -d/ -f1

2
投票
SERVER_IP="$(ip addr show ens160 | grep 'inet ' | cut -f2 | awk '{ print $2}')"

用您的接口名称替换ens160


1
投票

您可以运行简单的命令

curl ifconfig.co

curl ifconfig.me

wget -qO - icanhazip.com

1
投票

实际上,当你不想使用外部资源(或不能)时,我会建议:

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总线上第一个网络设备的名称,第二行为您提供其IP地址。

BTW ps ... | grep ... | awk ...发臭。 awk不需要grep。


0
投票

我相信获取外部服务器IP地址最可靠的方法是使用外部服务。

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


0
投票

但是我迟到了

curl -4 icanhazip.com 

返回服务器主IP地址。

© www.soinside.com 2019 - 2024. All rights reserved.