如何在 Arch Linux(Manjaro)中获取 LAN IP 地址作为输出

如何在 Arch Linux(Manjaro)中获取 LAN IP 地址作为输出

我有一个以前在 ubuntu 中使用的脚本。它使用命令获取了我的局域网 IP 地址hostname -I。我将获得一个类似192.168.1.xxx字符串的输出,可以在其他地方使用。

hostname -i但是,使用 Manjaro 时,当我尝试(小写)时,命令不存在,但我得到了127.0.1.1。我甚至安装了 dnsutils。

有没有什么办法可以让我从 Manjaro 中的任何命令/工具中获取我的 LAN 地址作为输出?

答案1

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

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

ip -json route get 8.8.8.8 | jq -r '.[].prefsrc'

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

相关内容