Chciałbym wiedzieć, które programy reklamują się za pomocą Bonjour na moim komputerze. Czy jest na to sposób?
Chciałbym wiedzieć, które programy reklamują się za pomocą Bonjour na moim komputerze. Czy jest na to sposób?
Odpowiedzi:
Narzędzie dns-sd
wiersza polecenia może być do tego pomocne, ale nauka korzystania z niego jest nieco trudna.
Uruchomienie dns-sd -B _services._dns-sd._udp
zwró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._tcp
wyszukiwanie 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._tcp
co 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.
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, lsof
aby określić powiązaną z nią aplikację, na przykład:
lsof -i | grep 57857
daje
iTunes 36720 ... TCP *:57857 (LISTEN)
kiedy mam uruchomiony iTunes.
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.c
i wklej go do main.c
nowego 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.
_daap
.