哪个终端命令只获取 IP 地址而没有别的?
Posted
技术标签:
【中文标题】哪个终端命令只获取 IP 地址而没有别的?【英文标题】:Which terminal command to get just IP address and nothing else? 【发布时间】:2012-01-21 16:27:11 【问题描述】:我正在尝试仅使用 IP 地址 (inet) 作为我编写的脚本中的参数。
在 unix 终端中是否有一种简单的方法来获取 IP 地址,而不是通过 ifconfig
查找?
【问题讨论】:
是的,或者我想的关于机器的任何其他唯一标识符。 您在主机名 -i 上得到一个无效选项? 主机名不如 ifconfig 可靠 joel 是对的,特别是你在谈论 MAC OS 和 Ubuntu 浏览下面的答案时,请记住ip -o address
的输出比ip address
的输出更容易使用。
【参考方案1】:
如果您的意思是“Linux”并且可移植到嵌入式 Linux 操作系统:
ip route get 8.8.8.8 | head -n 1 | tr -s ' ' | cut -d ' ' -f 7
这消除了调用 awk 的需要,它并非安装在所有嵌入式 Linux 上。 awk 只是从字符串中获取字段的过程有点繁重。
每个 Linux 环境都会提供 tr、head 和 cut。如果嵌入式环境真的很旧,它可能只有“ifconfig”,但你可以在这里得到图片:获取线,删除填充,剪掉你需要的东西。
【讨论】:
【参考方案2】:ip -4 addr show eth0
在某些机器上不起作用。例如,我收到此错误:
ip: symbol lookup error: ip: undefined symbol: bpf_program__section_name, version LIBBPF_0.2.0
这对我有用:
/sbin/ifconfig eth0 | grep 'inet ' | awk ' print $2'
这比接受的答案少一个管道。另外,我的 ifconfig 输出没有inet addr
。
要获取 IPv6 地址,请使用:
/sbin/ifconfig eth0 | grep 'inet6 ' | awk ' print $2'
【讨论】:
【参考方案3】:我会使用 Hostname -L
来获取 IP 以用作脚本中的变量。
【讨论】:
也许您想说的是hostname -i
或hostname -I
?
user@linux:~$ Hostname -L -bash: Hostname: command not found user@linux:~$
1. 大写H
错误 2. 没有这样-L
【参考方案4】:
curl ifconfig.co
这只会返回您系统的 IP 地址。
【讨论】:
这需要有效的互联网连接,并会返回您的公开可见的 IP 地址,这可能是您想要的,也可能不是您想要的。 如果系统通过 NAT 连接到互联网,它只会返回公共地址而不是系统网络接口的地址。以上是关于哪个终端命令只获取 IP 地址而没有别的?的主要内容,如果未能解决你的问题,请参考以下文章