使用系统调用的简单pythonic zeroconf实现
simplezeroconf的Python项目详细描述
ZeroConf服务发现和注册的简单Python接口。 支持python>;=2.7<;=3.5
安装
###要求
zeroconf
模块假设[avahi](http://avahi.org/)命令行
工具avahi-browse
和avahi-publish
可用。
例如,在ubuntu上,我可以安装:
$ sudo apt-get install avahi-tools
该模块还依赖于[Andrew Moffat的子流程包装器][sh]。安装 使用
$ pip install sh
如果使用setup.py或pip安装软件包,它将自动 所以你通常不需要这样做。
[sh]:http://amoffat.github.io/sh
###安装
下载源发行版并键入:
$ python setup.py install
###运行测试
您需要安装py.test,只需运行:
$ py.test –doctest-modules zeroconf/
用法
###ZeroConf服务发现
搜索所有可用的zeroconf服务由
>>> from zeroconf import ZeroConf >>> zc = ZeroConf() >>> services = zc.search()
搜索可以更加具体,例如:
>>> services = zc.search(name=None, type="_workstation._tcp", domain="local")
search
函数的所有可选参数是:
name
: service name, defaults toNone
(interpreted as all),type
: service type, defaults toNone
(interpreted as all),domain
: domain name, defaults to"local"
.
搜索结果是字典:
>>> print services {('tide [f0:7b:cb:42:ff:e0]', '_workstation._tcp', 'local'): {'txt': '', 'hostname': 'tide.local', 'port': '9', 'address': '192.168.0.13'}, ('wreck [00:26:18:4c:3f:ee]', '_workstation._tcp', 'local'): {'txt': '', 'hostname': 'wreck.local', 'port': '9', 'address': '192.168.0.10'}, ('biohazard [00:18:8b:ac:c8:45]', '_workstation._tcp', 'local'): {'txt': '', 'hostname': 'biohazard.local', 'port': '9', 'address': '192.168.0.12'}}
键是(name, type, domain)
元组,值是带txt
的字典,
hostname
、port
和address
键。
###ZeroConf服务注册
在本地域中注册新的zeroconf服务,注册地址为:
>>> zc = ZeroConf() >>> zc.register(name="ghost [08:00:27:bf:49:e1]", type="_workstation._tcp", port="9")
完成后,请使用以下命令取消注册:
>>> zc = ZeroConf() >>> zc.unregister(name="ghost [08:00:27:bf:49:e1]", type="_workstation._tcp", port="9")
unregister
的所有参数都是可选的,因此我们可以这样做:
>>> zc = ZeroConf() >>> zc.unregister(name="ghost [08:00:27:bf:49:e1]")
甚至,要注销在python会话期间发布的所有服务:
>>> zc = ZeroConf() >>> zc.unregister()
贡献者
- Sébastien Boisgérault <Sebastien.Boisgerault@mines-paristech.fr>: initial API design, Linux/avahi support.
- Olivier Huynh <olivierv.huynh@free.fr>: Windows/dns-sd support.
- David Francos Cuartero <me@davidfrancos.net>: OOP rewrite, Python3 support