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アプリケーションではOSが提供するAPIを使用しています。同様に、Linuxでは適切なOSが提供するAPIを使用する必要があります。libavahiクライアントまたはlibavahi-glibないランダムな CLI ツールを結合したものです。リストしたツールはすべて、スクリプト用ではなく、システム管理者が手動で使用するためのものです。

DNS-SD は、サービスの追加情報を TXT レコードに保存します。API の例に示されているように、「resolve callback」関数は、追加の操作を行わなくても、TXT レコードの配列をパラメーターとして自動的に受け取ります。

答え2

自動化スクリプトにこれが必要かどうかはわかりません。その場合、これが最善の解決策ではない可能性がありますが、簡単なpingコマンドで IP アドレスを取得することもできます。

次の例をご覧ください:

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

この場合の住所は明らかに192.168.0.104

関連情報