Je serais intéressé de savoir quels programmes s'annoncent en utilisant Bonjour sur ma machine. Existe-t-il un moyen de le faire ?
Réponses
Trop de publicités?El dns-sd
peut être utile à cet effet, mais son utilisation est un peu délicate.
Running dns-sd -B _services._dns-sd._udp
retournera une liste de tous les types de services disponibles qui sont actuellement annoncés. (La liste est établie par interface, il y aura donc une certaine redondance). Si cette opération est effectuée sur un Mac sans connexion réseau active, la liste ne contiendra bien sûr que les services fonctionnant sur cette machine.
En utilisant cette liste, vous pouvez demander des informations sur les différents types de services en exécutant des commandes telles que dns-sd -B _home-sharing._tcp
(qui répertorie les instances du Partage de maison iTunes), puis, à partir d'un nom d'instance, vous pouvez exécuter dns-sd -L "Wes Campaigne’s Library" _home-sharing._tcp
pour rechercher des informations sur une instance particulière.
Pour être honnête, cependant, tout ce processus est plutôt fastidieux, et c'est exactement ce que Découverte (anciennement Bonjour Browser) a été conçu pour faire, je vous recommande donc vivement de l'utiliser. Cependant, quelle que soit la méthode utilisée, il n'est pas toujours évident de savoir quel programme est responsable d'une entrée de service donnée.
Vous pouvez utiliser la stratégie donnée dans La réponse de binarybob pour essayer de faire correspondre les entrées de service aux processus en cours d'exécution en fonction du numéro de port, mais cela ne fonctionne pas toujours. Une autre stratégie consiste à exécuter quelque chose comme dns-sd -B _home-sharing._tcp
qui reste ouvert et signale l'ajout ou la suppression d'instances, puis, une par une, quittez diverses applications et (en supposant qu'il ne s'agit pas d'un service système) voyez laquelle de ces applications déclenche le message de suppression.
Bien qu'elle ne réponde peut-être pas à vos critères exacts, l'application de Tildesoft Navigateur Bonjour peut répertorier tous les services Bonjour annoncés sur votre réseau local et les hôtes qui les annoncent.
Je suppose que pour les services annoncés localement, vous pouvez descendre dans Bonjour Browser pour trouver le numéro de port sur lequel le service est annoncé, puis utiliser la commande suivante lsof
pour déterminer l'application qui lui est associée, par exemple :
lsof -i | grep 57857
donne
iTunes 36720 ... TCP *:57857 (LISTEN)
lorsque j'ai iTunes en marche.
Bien qu'il s'agisse d'un article patrimonial, il pourrait bien correspondre à ce que vous recherchez : DNSServiceMetaQuery. Comme indiqué dans la documentation :
Cet exemple utilise le DNSServiceQueryRecord pour envoyer une requête DNS multicast qui renvoie une liste des types de services Bonjour annoncés sur le réseau local. Les machines doivent exécuter mDNSResponder-58.6 (Mac OS X 10.3.4) ou une version ultérieure afin de répondre à cette requête.
Pour exécuter DNSServiceMetaQuery sur Mountain Lion (la version incluse ne s'exécute pas correctement), accédez à l'adresse suivante lien vers un exemple de code et cliquez sur Download Sample Code. Ensuite, installez Xcode si vous ne l'avez pas déjà fait. Créer un nouveau projet sous le modèle de Mac OS X > Application > Outil en ligne de commande .
Ouvrez et copiez tout le texte dans ~/Downloads/DNSServiceMetaQuery/DNSServiceMetaQuery.c
et le coller dans main.c
de votre nouveau projet Command Line Tool (en remplaçant tout ce qui se trouvait dans le modèle). Ensuite, vous devrez ajouter CoreFoundation.framework au projet en cliquant sur le nom du projet dans la barre latérale > Build Phases et ouvrir la flèche déroulante à côté de Lier des binaires avec des bibliothèques. Cliquez sur le bouton + recherchez CoreFoundation.framework, et ajoutez-le. Cliquez ensuite sur le bouton Run (qui ressemble à un bouton de lecture) et attendez l'image Build Succeeded. Quelque chose devrait sortir du bouton de la fenêtre avec un journal ; cela affichera tous vos services Bonjour. Assurez-vous que l'option All Output est cochée.