Linux-Befehl zum Erkennen des mDNS-Dienstes und zum Abrufen seiner IP-Adresse

Linux-Befehl zum Erkennen des mDNS-Dienstes und zum Abrufen seiner IP-Adresse

Ich sende den mDNS-Dienst von meinem WLAN-Modul aus. Ich muss das auf meinem Linux-PC finden und seine IP-Adresse abrufen.

  1. Ich habe den Befehl „mdns-scan“ verwendet und bekomme den aufgelisteten Dienstnamen angezeigt.
  2. Ich habe avahi-browse --all verwendet und mein Dienstname wird aufgelistet.
  3. Aber wie bekomme ich die IP-Adresse dieses Dienstes? Das ist meine Anforderung.
  4. In Android-Anwendungen kann ich alle Details zu den Diensten abrufen. Wie bekomme ich das unter Linux?
  5. Ich habe auch ifconfig -a und nmap ausprobiert.

Antwort1

Ich habe avahi-browse --all verwendet und mein Dienstname wird aufgelistet.

Verwendenavahi-resolve --nameum den Hostnamen seinen IP-Adressen zuzuordnen.

Alternativ *.localkönnen Sie mDNS-Hostnamen systemweit auflösbar machen, indem SieNSS-MDNs(unter Verwendung des Avahi-Backends) oder nss-resolve (unter Verwendung des systemd-resolved-Backends). Dadurch kann jede Anwendung mDNS-Namen verwenden, als wären sie normale DNS.

In Android-Anwendungen kann ich alle Details zu den Diensten abrufen. Wie bekomme ich das unter Linux?

In Android-Anwendungen verwenden Sie die vom Betriebssystem bereitgestellte API. Ebenso sollten Sie unter Linux die richtige vom Betriebssystem bereitgestellte API verwenden – entwederlibavahi-Clientoderlibavahi-glibnichtzufällig zusammengefügte CLI-Tools. Alle von Ihnen aufgelisteten Tools sind für die manuelle Verwendung durch Systemadministratoren gedacht und nicht für die Skripterstellung.

DNS-SD speichert die Zusatzinformationen des Dienstes in TXT-Records. Wie in den API-Beispielen gezeigt, erhält die Funktion „Resolve Callback“ automatisch ein Array von TXT-Records als Parameter, ohne dass Sie etwas zusätzlich tun müssen.

Antwort2

Ich bin nicht sicher, ob Sie dies für ein Automatisierungsskript benötigen. In diesem Fall ist dies möglicherweise nicht die beste Lösung, aber mit einem einfachen pingBefehl erhalten Sie auch die IP-Adresse.

Sehen Sie sich dieses Beispiel an:

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

Die Adresse ist in diesem Fall eindeutig192.168.0.104

verwandte Informationen