【问题标题】:Which terminal command to get just IP address and nothing else?哪个终端命令只获取 IP 地址而没有别的?
【发布时间】:2012-01-21 16:27:11
【问题描述】:

我正在尝试仅使用 IP 地址 (inet) 作为我编写的脚本中的参数。

在 unix 终端中是否有一种简单的方法来获取 IP 地址,而不是通过 ifconfig 查找?

【问题讨论】:

  • 是的,或者我想的关于机器的任何其他唯一标识符。
  • 您在主机名 -i 上得到一个无效选项?
  • 主机名不如 ifconfig 可靠
  • joel 是对的,特别是你在谈论 MAC OS 和 Ubuntu
  • 浏览下面的答案时,请记住ip -o address 的输出比ip address 的输出更容易使用。

标签: shell unix 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 连接到互联网,它只会返回公共地址而不是系统网络接口的地址。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2013-05-26
      • 2023-03-15
      • 2014-03-01
      • 2019-01-14
      • 2019-11-13
      • 1970-01-01
      相关资源
      最近更新 更多