2017-06-14 53 views
0

我听说有类型,如主地址等的IP地址,并尝试使用下面的命令如何找到我的Linux机器上的主要IP地址?

ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' 

要获取IP地址,并得到结果如下

192.168.122.1 
192.168.168.1 
172.16.142.1 
192.168.1.102 

所以从上面可以有人回答我的主要地址是?

+1

[如何获取Linux和OS X上本地计算机的主IP地址?](https://stackoverflow.com/questions/13322485/how-to-i-get-the-primary -ip-address-of-the-local-machine-on-linux-and-os-x)你还应该说明你正在使用的编程语言。你会得到更好的结果。 – jww

回答

1

没有“主地址”或“主设备”这样的东西。您有多个与多个网络设备相关的IP地址。

你可以找出哪些设备允许你访问互联网并找到它的本地IP地址。

为此,请发出命令route。这将输出类似

Kernel IP routing table 
Destination  Gateway   Genmask   Flags Metric Ref Use Iface 
default   192.168.0.254 0.0.0.0   UG 0  0  0 eth0 
192.168.1.0  0.0.0.0   255.255.255.0 U  0  0  0 eth0 

现在,所有你需要的是用就行了default设备和该命令使用它:

ifconfig <DEVICENAME> | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' 
1

当一台机器有不同的IP地址,这是不可能的从仅从网络角度定义主要IP。但是一台机器的名称通常可以通过uname -n命令或POSIX功能uname获得。获得该名称后,您可以通过getent命令或gethostbyname函数找到与其对应的IP地址:所谓的主IP地址是返回的第一个地址。

所以在这里你可以使用:

getent hosts $(uname -n) | head -1 | cut -f 1 -w 
0

主要地址取决于您的使用,有没有这样的网络水平。如果您通常使用一个IP访问您的服务器,则可以将其称为主服务器,而网络设备将不知道其差异。

相关问题