3 votos

Hacer que dns-sd salga después de listar el servicio

¿Hay alguna forma de hacer que dns-sd sólo liste un servicio y luego salga? Estoy usando

dns-sd -L "abcdef123@MySpeaker" _raop._tcp. local.

Para listar los detalles de un dispositivo AirPlay pero sigue funcionando una vez hecho esto.

Contexto: Tengo un altavoz AirPlay que tarda en aparecer en la lista de altavoces AirPlay de los dispositivos. El AppleTV se muestra al instante, así que tenía la esperanza de obtener algunas estadísticas sobre cuando el altavoz es lento para mostrar vs no; como una manera de entender lo que podría ser el problema.

1voto

Oskar Puntos 1242

Está diseñado para no salir. Tenemos que rastrear el proceso y enviarle una señal de salida / kill. Apple incluso dice esto en la página del manual. (y lo que es peor, no provee bindings para dns-sd en swift o cualquier otro lenguaje que pueda encontrar asi que esa parte es un ejercicio que queda para el lector)

Por ejemplo, las llamadas como "navegar completa; la acción de realizar un "browse" pone en marcha maquinaria para notificar al cliente cada vez que instancias de ese tipo de servicio aparezcan o desaparezcan de la red. Estas notificaciones siguen enviándose indefinidamente, durante minutos, horas o incluso días, a medida que los servicios van y vienen, hasta que el cliente finaliza explícitamente la llamada.

Lo mejor que puedo hacer para la secuencia de comandos es utilizar expect para bifurcar el proceso con un tiempo de espera o simplemente utilizar algo de fuerza bruta como el fondo del comando para que pueda dormir y matarlo y copiar los resultados a la mesa de trabajo.

dns-sd -B _home-sharing &
sleep 5 && kill %1

Si tiene otro proceso en segundo plano como %1 Esto matará el proceso equivocado.

En la práctica, nunca he tenido que esperar más de 30 segundos para una buena navegación o escucha, pero no todas las redes tienen el mismo tamaño.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X