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

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

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


当前回答

我必须补充科林安德森的回答,这个方法也考虑到如果你有两个界面,他们都显示为向上。

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

我一直在用树莓派(Raspberry Pi)开发一个应用程序,需要实际使用的IP地址,而不仅仅是它是否启动。大多数其他答案都会返回两个IP地址,这对我的场景来说不一定有帮助。

其他回答

假设你需要自己的主要公共IP,就像从世界其他地方看到的那样,尝试以下任何一种:

wget http://ipecho.net/plain -O - -q
curl http://icanhazip.com
curl http://ifconfig.me/ip

对于linux机器(不是OS X):

hostname --ip-address

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

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

在Linux上

hostname -I

在macOS

ipconfig getifaddr en0

hostname -I可以以不可靠的顺序返回多个地址(请参阅hostname manpage),但对我来说,它只返回192.168.1。X,也就是你想要的。

使用其他方法您可能会输入系统上定义了多个IP地址的冲突。 这一行总是获得默认使用的IP地址。

ip route get 8.8.8.8 | head -1 | awk '{print $7}'