Czy mogę wymienić wszystkie uruchomione usługi z obsługą Bonjour?

21

Chciałbym wiedzieć, które programy reklamują się za pomocą Bonjour na moim komputerze. Czy jest na to sposób?

skradać się
źródło

Odpowiedzi:

36

Narzędzie dns-sdwiersza polecenia może być do tego pomocne, ale nauka korzystania z niego jest nieco trudna.

Uruchomienie dns-sd -B _services._dns-sd._udpzwróci listę wszystkich dostępnych typów usług, które są obecnie reklamowane. (Lista dotyczy poszczególnych interfejsów, więc wystąpi nadmiarowość). Jeśli zostanie to zrobione na komputerze Mac bez aktywnego połączenia sieciowego, lista będzie oczywiście zawierać tylko usługi uruchomione na tym komputerze.

Korzystając z tej listy, możesz poprosić o informacje o poszczególnych typach usług, uruchamiając takie rzeczy dns-sd -B _home-sharing._tcp(które wyświetlają wystąpienia iTunes Home Sharing), a następnie, biorąc pod uwagę nazwę wystąpienia, możesz uruchomić dns-sd -L "Wes Campaigne’s Library" _home-sharing._tcpwyszukiwanie informacji dla określonego wystąpienia.

Szczerze mówiąc, cały ten proces jest dość nużący i właśnie do tego został stworzony Discovery (wcześniej Bonjour Browser), więc bardzo polecam korzystanie z niego. Niezależnie od tego, jak to zrobisz, nie zawsze może być jasne, który program jest odpowiedzialny za daną usługę.

Możesz użyć strategii podanej w odpowiedzi binarybob, aby spróbować mapować wpisy usług do uruchomionych procesów na podstawie numeru portu, ale nie zawsze może to działać. Inną strategią jest uruchamianie czegoś takiego, dns-sd -B _home-sharing._tcpco pozostaje otwarte i raportowanie, gdy instancje są dodawane lub usuwane, a następnie, jeden po drugim, zamykaj różne aplikacje i (zakładając, że nie jest to usługa systemowa) sprawdzaj, który z nich powoduje wyświetlenie komunikatu o usunięciu.

Wes Campaigne
źródło
Wygląda na to, że usługa udostępniania muzyki jest teraz nazywana _daap.
zneak
W rzeczywistości DAAP odwołuje się do dwóch starszych form udostępniania biblioteki przez iTunes. DAAP jest włączony poprzez Preferencje> Udostępnianie> Udostępnij moją bibliotekę w mojej sieci lokalnej. Udostępnianie domowe, dodane w iTunes 9, jest włączane przez Plik> Udostępnianie domowe. Używa twojego Apple ID do uwierzytelnienia.
Wes Campaigne,
5

Chociaż może nie spełniać twoich dokładnych kryteriów, przeglądarka Bonjour Tildesoft może wyświetlić listę wszystkich usług bonjour reklamowanych w Twojej sieci lokalnej oraz hostów, którzy je reklamują.

Sądzę, że w przypadku reklamowanych lokalnie usług, które można rozwinąć w przeglądarce Bonjour w celu znalezienia numeru portu, na którym reklamowana jest usługa, a następnie użyj, lsofaby określić powiązaną z nią aplikację, na przykład:

lsof -i | grep 57857

daje

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

kiedy mam uruchomiony iTunes.

binarybob
źródło
2

Chociaż klasyfikowany jako starszy artykuł, może być tym, czego szukasz: DNSServiceMetaQuery. Zgodnie z dokumentacją:

W tym przykładzie użyto DNSServiceQueryRecord, aby wysłać zapytanie DNS multiemisji, które zwraca listę typów usług Bonjour reklamowanych w sieci lokalnej. Na maszynach musi być uruchomiony program mDNSResponder-58.6 (Mac OS X 10.3.4) lub nowszy, aby móc odpowiedzieć na to zapytanie.

Aby uruchomić DNSServiceMetaQuery na Mountain Lion (dołączona kompilacja nie działa poprawnie), przejdź do łącza do przykładowego kodu i kliknij Pobierz przykładowy kod. Następnie zainstaluj Xcode, jeśli jeszcze tego nie zrobiłeś. Utwórz nowy projekt w szablonie Mac OS X> Aplikacja> Narzędzie wiersza poleceń .

Otwórz i skopiuj cały tekst ~/Downloads/DNSServiceMetaQuery/DNSServiceMetaQuery.ci wklej go do main.cnowego projektu narzędzia wiersza polecenia (zastępując wszystko, co było w szablonie). Następnie musisz dodać plik CoreFoundation.framework do projektu, klikając nazwę projektu na pasku bocznym> Fazy kompilacji i otwórz strzałkę rozwijaną obok opcji Połącz plik binarny z bibliotekami. Kliknij +przycisk, wyszukaj plik CoreFoundation.framework i dodaj go. Następnie kliknij przycisk Uruchom (wygląda jak przycisk odtwarzania) i poczekaj na zdjęcie z powodzeniem kompilacji. Coś powinno pochodzić z przycisku okna z dziennikiem; spowoduje to wyświetlenie wszystkich twoich usług Bonjour. Upewnij się, że wszystkie dane wyjściowe są zaznaczone.

Ethan Lee
źródło
Jestem sprawnym programistą, więc znam się na Xcode (i to dobrze, bo nie jestem pewien, czy chciałbym zainstalować Xcode tylko do tego). Sprawdzę to, dzięki!
zneak
Apple usunął kod, jednak jest on dostępny w lustrze .
Pan Tao
@ Mr.Tao Kod nadal istnieje na stronie Apple. Zaktualizowałem link w odpowiedzi
Jay O'Conor