Posso listar todos os serviços habilitados para Bonjour que estão em execução?

21

Eu estaria interessado em saber quais programas se anunciam usando Bonjour na minha máquina. Existe uma maneira de fazer isso?

zneak
fonte

Respostas:

36

A dns-sdferramenta de linha de comando pode ser útil para isso, mas aprender a usá-la é um pouco complicado.

A execução dns-sd -B _services._dns-sd._udpretornará uma lista de todos os tipos de serviço disponíveis que estão sendo anunciados no momento. (A lista é por interface, portanto haverá redundância.) Se isso for feito em um Mac sem conexão de rede ativa, é claro que a lista conterá apenas os serviços em execução nessa máquina.

Usando essa lista, você pode solicitar informações sobre os tipos de serviços individuais executando coisas como dns-sd -B _home-sharing._tcp(que lista as instâncias do iTunes Home Sharing) e, em seguida, com o nome de uma instância, você pode executar dns-sd -L "Wes Campaigne’s Library" _home-sharing._tcpas informações de pesquisa de uma instância específica.

Para ser honesto, porém, todo esse processo é bastante tedioso e é exatamente para isso que o Discovery (anteriormente Bonjour Browser) foi criado, então eu recomendo usá-lo. Seja como for, no entanto, nem sempre é claro qual o programa responsável por uma determinada entrada de serviço.

Você pode usar a estratégia dada na resposta do binarybob para tentar mapear entradas de serviço para processos em execução com base no número da porta, mas isso nem sempre funciona. Outra estratégia é executar algo como o dns-sd -B _home-sharing._tcpque permanece aberto e relata quando as instâncias são adicionadas ou removidas e, uma a uma, sai de vários aplicativos e (assumindo que não é um serviço do sistema) ver qual deles sai acionando a mensagem de remoção.

Wes Campaigne
fonte
Parece que o serviço de compartilhamento de música agora é chamado _daap.
zneak
Na verdade, o DAAP refere-se à mais antiga das duas formas separadas de compartilhamento de bibliotecas do iTunes. O DAAP é ativado em Preferências> Compartilhamento> Compartilhar minha biblioteca na minha rede local. O Compartilhamento Doméstico, adicionado no iTunes 9, é ativado em Arquivo> Compartilhamento Doméstico. Ele usa seu Apple ID para autenticação.
9788 Wesleye
5

Embora possa não satisfazer seus critérios exatos, o Navegador Bonjour da Tildesoft pode listar todos os serviços bonjour anunciados em sua rede local e os hosts que os anunciam.

Eu acho que, para serviços anunciados localmente, você pode fazer uma busca detalhada no navegador Bonjour para encontrar o número da porta na qual o serviço é anunciado e, em seguida, usar lsofpara determinar o aplicativo associado a ele, por exemplo:

lsof -i | grep 57857

iTunes    36720   ...     TCP *:57857 (LISTEN)

quando eu tiver o iTunes em execução.

binarybob
fonte
2

Embora classificado como um artigo herdado, pode muito bem ser o que você está procurando: DNSServiceMetaQuery. Conforme descrito na documentação:

Este exemplo usa DNSServiceQueryRecord para enviar uma consulta DNS Multicast que retorna uma lista dos tipos de serviço Bonjour que estão sendo anunciados na rede local. As máquinas devem estar executando o mDNSResponder-58.6 (Mac OS X 10.3.4) ou posterior para responder a esta consulta.

Para executar o DNSServiceMetaQuery no Mountain Lion (a compilação incluída não funciona corretamente), acesse o link do código de exemplo e clique em Baixar Código de Amostra. Em seguida, instale o Xcode se você ainda não o fez. Crie um novo projeto no modelo do Mac OS X> Aplicativo> Command Line Tool .

Abra e copie todo o texto ~/Downloads/DNSServiceMetaQuery/DNSServiceMetaQuery.ce cole-o no main.cseu novo projeto da Command Line Tool (substituindo tudo o que havia no modelo). Em seguida, você precisará adicionar CoreFoundation.framework ao projeto clicando no nome do projeto na barra lateral> Construir fases e abrir a seta suspensa ao lado de Vincular binário com bibliotecas. Clique no +botão, procure CoreFoundation.framework e adicione-o. Em seguida, clique no botão Executar (se parece com um botão de reprodução) e aguarde uma imagem de Build Successful. Algo deve vir do botão da janela com um log; isso exibirá todos os seus serviços Bonjour. Verifique se Todas as saídas está marcada.

Ethan Lee
fonte
Como sou um programador proficiente, conheço o caminho do Xcode (e isso é bom porque não tenho certeza se gostaria de instalar o Xcode apenas por isso). Vou conferir, obrigado!
Zneak 29/09/12
A Apple removeu o código, no entanto, está disponível em um espelho .
Tao
@ Mr.Tao O código ainda existe no site da Apple. Eu atualizei o link na resposta
Jay O'Conor