Posso elencare tutti i servizi abilitati per Bonjour in esecuzione?


21

Sarei interessato a sapere quali programmi si pubblicizzano usando Bonjour sulla mia macchina. C'è un modo per farlo?

Risposte:


36

Lo dns-sdstrumento da riga di comando può essere utile per questo, ma imparare a usarlo è un po 'complicato.

In esecuzione dns-sd -B _services._dns-sd._udprestituirà un elenco di tutti i tipi di servizi disponibili che sono attualmente pubblicizzati. (L'elenco è per interfaccia, quindi ci sarà un po 'di ridondanza.) Se questo viene fatto su un Mac senza connessione di rete attiva, l'elenco conterrà ovviamente solo i servizi in esecuzione su quella macchina.

Utilizzando tale elenco, è possibile richiedere informazioni sui singoli tipi di servizi eseguendo cose come dns-sd -B _home-sharing._tcp(che elenca le istanze di iTunes Home Sharing), quindi, dato un nome di istanza, è possibile eseguire dns-sd -L "Wes Campaigne’s Library" _home-sharing._tcpper cercare informazioni per una particolare istanza.

Ad essere onesti, tuttavia, l'intero processo è piuttosto noioso, ed è esattamente ciò che Discovery (precedentemente Bonjour Browser) è stato creato per fare, quindi consiglio vivamente di usarlo. In qualunque modo lo faccia, tuttavia, potrebbe non essere sempre chiaro quale programma sia responsabile di un determinato servizio.

È possibile utilizzare la strategia indicata nella risposta di binarybob per provare a mappare le voci del servizio ai processi in esecuzione in base al numero di porta, ma ciò potrebbe non funzionare sempre. Un'altra strategia è quella di eseguire qualcosa di similedns-sd -B _home-sharing._tcp che rimane aperto e segnala quando vengono aggiunte o rimosse le istanze, quindi, una alla volta, esce da varie app e (supponendo che non sia un servizio di sistema) vedere chi si chiude attiva il messaggio di rimozione.


Sembra che il servizio di condivisione di musica sia ora chiamato _daapperò.
zneak,

In realtà, DAAP fa riferimento alla più vecchia delle due forme separate di condivisione delle librerie di iTunes. DAAP è abilitato tramite Preferenze> Condivisione> Condividi la mia libreria sulla mia rete locale. La condivisione domestica, aggiunta in iTunes 9, è abilitata tramite File> Condivisione domestica. Utilizza il tuo ID Apple per l'autenticazione.
Wes Campaigne,

5

Anche se potrebbe non soddisfare i tuoi criteri esatti, il browser Bonjour di Tildesoft può elencare tutti i servizi bonjour pubblicizzati sulla tua rete locale e gli host che li pubblicizzano.

Immagino che per i servizi pubblicizzati localmente potresti approfondire nel browser Bonjour per trovare il numero di porta su cui è pubblicizzato il servizio, quindi utilizzare lsofper determinare l'applicazione ad esso associata, ad esempio:

lsof -i | grep 57857

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

quando ho iTunes in esecuzione.


2

Sebbene classificato come un articolo legacy, questo potrebbe benissimo essere quello che stai cercando: DNSServiceMetaQuery. Come indicato dalla documentazione:

In questo esempio viene utilizzato DNSServiceQueryRecord per inviare una query DNS multicast che restituisce un elenco di tipi di servizio Bonjour pubblicizzati sulla rete locale. Le macchine devono eseguire mDNSResponder-58.6 (Mac OS X 10.3.4) o versioni successive per rispondere a questa query.

Per eseguire DNSServiceMetaQuery su Mountain Lion (la build inclusa non funziona correttamente), vai al link del codice di esempio e fai clic su Scarica codice di esempio. Quindi, installa Xcode se non l'hai già fatto. Crea un nuovo progetto con il modello di Mac OS X> Applicazione> Strumento da riga di comando .

Apri e copia tutto il testo ~/Downloads/DNSServiceMetaQuery/DNSServiceMetaQuery.ce incollalo nel main.cnuovo progetto dello strumento da riga di comando (sostituendo tutto ciò che era presente nel modello). Successivamente, dovrai aggiungere CoreFoundation.framework al progetto facendo clic sul nome del progetto nella barra laterale> Crea fasi e apri la freccia a discesa accanto a Collega binario con librerie. Fai clic sul +pulsante, cerca CoreFoundation.framework e aggiungilo. Quindi fai clic sul pulsante Esegui (assomiglia a un pulsante di riproduzione) e attendi che l'immagine sia riuscita. Qualcosa dovrebbe provenire dal pulsante della finestra con un registro; questo mostrerà tutti i tuoi servizi Bonjour. Assicurarsi che sia selezionato Tutti gli output.


Sono un programmatore esperto, quindi conosco il mio modo di aggirare Xcode (e questa è una buona cosa perché non sono sicuro che vorrei installare Xcode solo per quello). Lo controllerò, grazie!
zneak,

Apple ha rimosso il codice, tuttavia, è disponibile su un mirror .
Mr. Tao,

@ Mr.Tao Il codice esiste ancora sul sito di Apple. Ho aggiornato il link nella risposta
Jay O'Conor il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.