Como você obtém o “Bonjour Service Name” de um único dispositivo?

1

Eu tenho dois tipos de dispositivos que eu quero usinar por Ethernet para um host. Quero saber qual desses dois tipos de dispositivos está conectado.

Ambos os dispositivos usam Avahi / Bonjour e têm o que chamam de "Bonjour Service Name" que contém informações úteis que eu posso usar para diferenciar os dois tipos de dispositivos, mas os requisitos de rede significam que não posso usar um cobertor mDNS Browse porque Vai sair na porta de rede secundária do host (o que não é permitido). Este "Bonjour Service Name" é consistentemente usado pelos dispositivos como a primeira parte de todos os serviços que eles transmitem (por exemplo, UsefulDeviceName._http._tcp.local , UsefulDeviceName._ftp._tcp.local , UsefulDeviceName._telnet._tcp.local , etc).

Cada dispositivo dos dois tipos também tem seu próprio nome DNS exclusivo, mas isso é apenas [GenericPrefix][MacAddress].local , o que não é suficiente para diferenciá-los (eles são do mesmo fabricante e, portanto, ambos os tipos de dispositivos usam o mesmo MAC blocos).

Toda ferramenta que eu tentei até agora faz uma transmissão mDNS pela rede e mostra o nome Bonjour Service, mas não atende aos requisitos de rede "não usar todas as portas". Executar uma consulta DNS como isso retorna o nome DNS normal, não o nome do serviço Bonjour.

Saberemos o IP do dispositivo. Existe um comando Linux simples que perguntará ao dispositivo "qual é o seu nome de serviço Bonjour?" / "Quais nomes de serviço Bonjour você tem?" que pode ser confiável para enviar somente os pacotes pela interface que os dispositivos serão conectados, e não pela rede mais ampla?

    
por IBBoard 22.08.2012 / 15:14

2 respostas

1

A resposta parece ser "não há maneira confiável de fazê-lo". Nem todos os dispositivos ouvem / respondem aos comandos dig listados na outra resposta e tudo o mais para encontrar nomes mDNS na rede (como avahi-browse e o mal comportado mdns-scan ) exige multicasting / broadcasting e não pode ser usado para sondar uma máquina individual.

    
por 19.09.2012 / 14:29
0

dig deve funcionar, se você enviar a mesma consulta como várias ferramentas "mDNS browser":

dig _services._dns-sd._udp.local ptr @ip-address -p 5353

(Opcionalmente adicione +short .)

Note que não há " o nome do Bonjour Service" - cada dispositivo é livre para registrar vários serviços sob vários nomes.

    
por 22.08.2012 / 16:50