用於取得 mDNS 服務發現並取得其 IP 位址的 Linux 命令

用於取得 mDNS 服務發現並取得其 IP 位址的 Linux 命令

我正在從我的 WiFi 模組廣播 mDNS 服務。我需要在我的 Linux PC 中找到它並取得它的 IP 位址。

  1. 我使用了 mdns-scan 命令,並列出了服務名稱。
  2. 我使用了 avahi-browse --all 並且列出了我的服務名稱。
  3. 但是我如何獲得該服務的 IP 位址呢?這是我的要求。
  4. 在 Android 應用程式中,我可以獲得服務的完整詳細資訊。在Linux下如何取得它?
  5. 我也嘗試了 if 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

相關內容