Linux 命令获取 mDNS 服务发现并获取其 IP 地址

Linux 命令获取 mDNS 服务发现并获取其 IP 地址

我正在从 WiFi 模块广播 mDNS 服务。我需要在我的 Linux PC 上发现它并获取其 IP 地址。

  1. 我使用了 mdns-scan 命令并列出了服务名称。
  2. 我使用了 avahi-browse --all 并列出了我的服务名称。
  3. 但是我如何获取该服务的 IP 地址?这是我的要求。
  4. 在 Android 应用程序中,我能够获取服务的完整详细信息。如何在 Linux 中获取它?
  5. 我也尝试了 config -a 和 nmap。

答案1

我使用了 avahi-browse --all 并列出了我的服务名称。

使用avahi-resolve --name将主机名映射到其 IP 地址。

或者,要使 mDNS*.local主机名在系统范围内可解析,您可以使用nss-mdns(使用 Avahi 后端)或 nss-resolve(使用 systemd-resolved 后端)。这将允许任何应用程序使用 mDNS 名称,就像它们是常规 DNS 一样。

在 Android 应用程序中,我能够获取服务的完整详细信息。如何在 Linux 中获取它?

在 Android 应用程序中,您使用的是操作系统提供的 API。同样,在 Linux 中,您应该使用正确的操作系统提供的 API –libavahi-客户端或者libavahi-glib不是随机 CLI 工具粘在一起。您列出的所有工具都是供系统管理员手动使用的,而不是用于编写脚本。

DNS-SD 将服务的附加信息存储在 TXT 记录中。如 API 示例所示,“解析回调”函数将自动接收 TXT 记录数组作为参数,无需执行任何额外操作。

答案2

我不确定您是否需要这个自动化脚本,在这种情况下这可能不是最好的解决方案,但一个简单的ping命令也会让您获得 IP 地址。

看看这个例子:

$ ping lightpizero.local
PING lightpizero.local (192.168.0.104) 56(84) bytes of data.

本例中的地址显然是192.168.0.104

相关内容