我正在寻找一个命令行解决方案,将返回我的主(第一个)IP地址的本地主机,而不是127.0.0.1
该解决方案至少适用于Linux (Debian和RedHat)和OS X 10.7+
我知道在这两个平台上都可以使用ifconfig,但是它的输出在这些平台之间并不一致。
我正在寻找一个命令行解决方案,将返回我的主(第一个)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地址,这对我的场景来说不一定有帮助。
其他回答
ifconfig $(netstat -rn | grep -E "^default|^0.0.0.0" | head -1 | awk '{print $NF}') | grep 'inet ' | awk '{print $2}' | grep -Eo '([0-9]*\.){3}[0-9]*'
不确定这是否适用于所有操作系统,尝试一下。
ifconfig | awk -F"[ :]+" '/inet addr/ && !/127.0/ {print $4}'
ip addr show | grep -E '^\s*inet' | grep -m1 global | awk '{ print $2 }' | sed 's|/.*||'
下面这个比较容易读: Ifconfig | grep 'inet addr:' |/usr/bin/awk '{print $2}' | tr -d addr:
如果你知道网络接口(eth0, wlan, tun0等):
ifconfig eth0 | grep addr: | awk '{ print $2 }' | cut -d: -f2