如何在 arch linux (Manjaro) 中获取 lan ip 地址作为输出

ana*_*chy 7 networking linux lan arch-linux manjaro

我有一个我曾经在 ubuntu 中使用的脚本。它使用命令获取了我的 LAN IP 地址hostname -I192.168.1.xxx我会得到像字符串一样的输出,我可以在其他地方使用它。

hostname -i然而,对于 Manjaro,当我尝试, (小写)时,该命令不存在,但我得到了127.0.1.1。我什至安装了 dnsutils。

有没有办法可以将我的 LAN 地址作为 Manjaro 中任何命令/工具的输出?

A.B*_*A.B 11

Linux iproute2工具自 2017 年以来一直支持 JSON 输出。然后可以使用jq实用程序(分布在大多数发行版中,包括Manjaro)轻松解析此输出以在脚本中使用。

您可以将其与询问内核如何选择到达某个众所周知的地址(例如:8.8.8.8)结合起来,并仅保留相关部分(以及其他信息,例如网关、接口名称等):所选的"prefsrc"使用jq过滤器的本地地址 ( ) 。不发出任何数据包,它只是要求内核解析路由并返回结果:

ip -json route get 8.8.8.8 | jq -r '.[].prefsrc'
Run Code Online (Sandbox Code Playgroud)

将给出的结果不会受到任何输出特性的影响,也不需要事先知道接口名称。这个结果是动态的。例如,如果随后对所有流量使用 VPN,则前一命令将返回新的隧道地址。