哪个终端命令只获取 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 -ihostname -I user@linux:~$ Hostname -L -bash: Hostname: command not found user@linux:~$ 1. 大写H 错误 2. 没有这样-L【参考方案4】:
curl ifconfig.co 

这只会返回您系统的 IP 地址。

【讨论】:

这需要有效的互联网连接,并会返回您的公开可见的 IP 地址,这可能是您想要的,也可能不是您想要的。 如果系统通过 NAT 连接到互联网,它只会返回公共地址而不是系统网络接口的地址。

以上是关于哪个终端命令只获取 IP 地址而没有别的?的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu系统怎么样查看自己的ip地址

linux如何查看本机ip地址

如何在linux下获取默认网关地址

014-docker-终端获取 docker 容器(container)的 ip 地址

linux怎么查看ip地址

如何查看连接到服务器的所有IP