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