【问题标题】: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,而网络设备不会知道其中的区别。

      【讨论】:

        猜你喜欢
        • 2012-10-30
        • 2012-02-07
        • 1970-01-01
        • 2019-08-14
        • 2010-09-17
        • 2014-02-15
        • 1970-01-01
        • 1970-01-01
        • 2014-12-02
        相关资源
        最近更新 更多