【问题标题】:How to find primary ip address on my linux machine?如何在我的 linux 机器上找到主 IP 地址?
【发布时间】:2017-11-16 13:59:31
【问题描述】:
我听说有一些类型的IP地址,如主地址等,并尝试使用以下命令获取IP地址
ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'
得到如下结果
192.168.122.1
192.168.168.1
172.16.142.1
192.168.1.102
那么从上面有人可以回答我的主要地址是哪个吗?
【问题讨论】:
标签:
linux
networking
ip-address
【解决方案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]*'
【解决方案2】:
当一台机器有不同的 IP 地址时,不可能仅从网络的角度定义主 IP。但是机器通常有一个可以通过命令uname -n 或POSIX 函数uname 获得的名称。一旦有了这个名字,就可以通过getent命令或者gethostbyname函数找到对应的IP地址:所谓的主IP地址就是返回的第一个地址。
所以你可以在这里使用:
getent hosts $(uname -n) | head -1 | cut -f 1 -w
【解决方案3】:
主地址取决于您的使用情况,在网络级别没有这样的内容。如果您通常使用一个 IP 来访问您的服务器,您可能会将其称为主 IP,而网络设备不会知道其中的区别。