Я транслирую службу mDNS с моего модуля WiFi. Мне нужно обнаружить его на моем ПК Linux и получить его IP-адрес.
- Я использовал команду mdns-scan и получил список имен служб.
- Я использовал avahi-browse --all и получил список имен своих служб.
- Но как мне получить IP-адрес этого сервиса? Это мое требование.
- В приложениях Android я могу получить полную информацию о сервисах. Как мне получить ее в Linux?
- Я также попробовал config -a и nmap.
решение1
Я использовал avahi-browse --all и получил список имен своих служб.
Использоватьavahi-resolve --name
для сопоставления имени хоста с его IP-адресами.
В качестве альтернативы, чтобы сделать *.local
имена хостов mDNS разрешимыми в рамках всей системы, вы можете использоватьnss-mdns(используя бэкэнд Avahi) или nss-resolve (используя бэкэнд systemd-resolved). Это позволит любому приложению использовать имена mDNS, как если бы они были обычными DNS.
В приложениях Android я могу получить полную информацию о сервисах. Как мне получить ее в Linux?
В приложениях Android вы используете API, предоставляемые ОС. Аналогично, в Linux вы должны использовать правильный API, предоставляемый ОС – либоlibavahi-клиентилилибавахи-глиб–нетслучайные инструменты 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