Search code examples
pythonbonjourzeroconf

Simplest way to publish over Zeroconf/Bonjour?


I've got some apps I would like to make visible with zeroconf.

  1. Is there an easy scriptable way to do this?
  2. Is there anything that needs to be done by my network admin to enable this?

Python or sh would be preferrable. OS-specific suggestions welcome for Linux and OS X.


Solution

  • EDIT 2022-02-27: I'm not 100% sure anymore what I wrote is actually correct. I tried it recently and although it ran, I couldn't get the info back through mdns query; suggesting that mDNS is possibly more complex than expected..... To be continued.... And please leave a comment if this does/does not work for you.


    Although this answer points you in the right direction, it seems that python-zeroconf (0.39.4) had some changes making the example above not work (for me) anymore.

    Also I think a more minimal, self-contained, answer would be nice, so here goes:

    from zeroconf import ServiceInfo, Zeroconf
    
    PORT=8080
    
    zeroconf = Zeroconf()
    wsInfo = ServiceInfo('_http._tcp.local.',
                         "myhost._http._tcp.local.",
                         PORT, 0, 0, {"random_key": "1234", "answer": "42"})
    zeroconf.register_service(wsInfo)
    
    import time
    time.sleep(1000);
    
    

    Note that anything beyond PORT is optional for ServiceInfo().

    You can run multiple of these programs at the same time; they will all bind to the same UDP port without a problem.