у меня есть два типа устройств, которые я хочу обрабатывать через Ethernet на хост. Я хочу знать, какой из этих двух типов устройств подключен.
оба устройства используют Avahi / Bonjour и имеют то, что они называют "именем службы Bonjour", которое содержит полезную информацию, которую я могу использовать для различения двух типов устройств, но требования к сети означают, что я не могу использовать общий просмотр mDNS, потому что он выйдет на вторичный сетевой порт хоста (что не разрешено). Это " Bonjour Имя службы " последовательно используется устройствами в качестве первой части всех транслируемых ими служб (например,UsefulDeviceName._http._tcp.local
,UsefulDeviceName._ftp._tcp.local
,UsefulDeviceName._telnet._tcp.local
и т. д.).
каждое устройство двух типов также имеет свое уникальное DNS-имя, но это просто [GenericPrefix][MacAddress].local
, что недостаточно, чтобы отличить их (они от одного производителя, и поэтому оба типа устройств используют одни и те же блоки MAC).
каждый инструмент, который я пробовал до сих пор делает mDNS вещания по сети и показывает службу Bonjour имя, но не соответствует сетевому требованию "не использовать все порты". Выполнение DNS-запроса типа этой возвращает обычное DNS-имя, а не имя службы Bonjour.
мы будем знать IP устройства. Есть ли простая команда Linux, которая спросит устройство "каково ваше имя службы Bonjour?"/"какие имена служб Bonjour у вас есть?"на это можно положиться, чтобы отправлять пакеты только через интерфейс, к которому будут подключены устройства, а не шире сеть?