66

以前我在 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的等效命令是什么

非常感谢

4

11 回答 11

115

您可以使用主机名命令:

ipaddr=$(hostname -I)

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

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

于 2015-01-14T20:47:17.783 回答
36

参考:https ://garbagevalue.com/blog/4-simle-ways-to-check-ip-adress-in-centos-7


我正在使用 CentOS 7 和命令

ip a

足以完成这项工作。

在此处输入图像描述

编辑

只需从该测试中切出 IP 地址部分。

ip a | grep 192

于 2018-05-26T10:44:15.717 回答
36

ip addr在控制台输入命令

在此处输入图像描述

于 2017-08-23T10:12:17.727 回答
5

主机名-I | awk '{打印 $1}'

于 2020-02-12T18:45:09.387 回答
3

您可以运行简单的命令,例如

curl ifconfig.co

curl ifconfig.me

wget -qO - icanhazip.com
于 2018-07-23T13:51:45.617 回答
3

不过我用有点晚了

curl -4 icanhazip.com 

返回服务器主 IP 地址。

于 2019-06-06T04:39:55.340 回答
3

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

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。

于 2019-04-03T15:46:23.020 回答
3

像这样的东西 - 对@maarten-vanlinthout 的回答的重复

ip  -f inet a show eth0| grep inet| awk '{ print $2}' | cut -d/ -f1
于 2017-12-08T04:47:05.450 回答
2
SERVER_IP="$(ip addr show ens160 | grep 'inet ' | cut -f2 | awk '{ print $2}')"

将 ens160 替换为您的接口名称

于 2016-08-14T08:48:02.103 回答
-1

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

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

于 2017-06-26T18:28:53.687 回答
-2

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

ifconfig eth0 | grep inet | awk '{print $2}' | cut -d/ -f1
于 2018-12-30T10:21:59.547 回答