我正在寻找一个命令行解决方案,将返回我的主(第一个)IP地址的本地主机,而不是127.0.0.1

该解决方案至少适用于Linux (Debian和RedHat)和OS X 10.7+

我知道在这两个平台上都可以使用ifconfig,但是它的输出在这些平台之间并不一致。


当前回答

另一个在Linux和OSX上都可以工作的ifconfig变体:

ifconfig | grep "inet " | cut -f2 -d' '

其他回答

下面的代码可以在Linux上运行,但不能在OSX上运行。

这根本不依赖于DNS,即使/etc/hosts没有正确设置(1是1.0.0.0的简写),它也能工作:

ip route get 1 | awk '{print $NF;exit}'

或者避免awk,使用谷歌的公共DNS 8.8.8.8。

ip route get 8.8.8.8 | head -1 | cut -d' ' -f8

一种不太可靠的方式:(见下面的评论)

hostname -I | cut -d' ' -f1

在linux系统上获取本地ipv4地址的最短方法:

hostname -I | awk '{print $1}'

对于linux,你需要的是这个命令:

ifconfig $1|sed -n 2p|awk '{ print $2 }'|awk -F : '{ print $2 }'

在你的shell中输入这个,你就会知道你的ip。

如果你知道网络接口(eth0, wlan, tun0等):

ifconfig eth0 | grep addr: | awk '{ print $2 }' | cut -d: -f2

在Mac电脑上,考虑以下问题:

scutil --nwi | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'