之前我在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中,相当的命令是什么?
非常感谢。
之前我在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中,相当的命令是什么?
非常感谢。
ipaddr=$(hostname -I)
-i, --ip-address
: 显示主机的IP地址。请注意,仅当主机名能够解析时才有效。
-I, --all-ip-addresses
: 显示主机的所有网络地址。此选项枚举所有网络接口上配置的地址。环回接口和IPv6链接本地地址被省略。与选项-i相反,此选项不依赖于名称解析。请勿对输出顺序做任何假设。
参考: https://garbagevalue.com/blog/4-simle-ways-to-check-ip-adress-in-centos-7
我正在使用CentOS 7,命令:
ip a
就足以完成任务。
只需从该文本中截取IP地址部分。
ip a | grep 192
ip
? - phreedhostname -I | awk ' {print $1}'
ip -f inet a show eth0| grep inet| awk '{ print $2}' | cut -d/ -f1
SERVER_IP="$(ip addr show ens160 | grep 'inet ' | cut -f2 | awk '{ print $2}')"
将ens160替换为您的接口名称
实际上,在您不想使用外部资源(或无法使用)时,我建议:
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地址。
顺便说一下,ps ... | grep ... | awk ...
很烂。awk不需要grep。
IPADDR=$(ip -br address show | awk '$2 == "UP" {print substr($3,1,index($3,"/")-1);}')
。 - Orsiris de Jong您可以运行简单的命令,例如:
curl ifconfig.co
curl ifconfig.me
wget -qO - icanhazip.com
有点晚了,但我使用
curl -4 icanhazip.com
返回服务器的主IP地址。
我认为获取外部服务器IP地址最可靠的方法是使用外部服务。
ipaddr=$(curl -s http://whatismyip.akamai.com/)
ip addr show
命令的输出对您有用吗?当然,您需要调整解析方式... - twalberg