我正在尝试在 Avahi 中设置 CNAME 以广播多个主机名。我在网上找到了各种各样的例子,它们都可以工作,但它们都需要长期的过程:
https://github.com/Dalee/avahi-cname-aliases/blob/master/avahi_cname_aliases/init .py #L83
# run and stay foreground
def run(self):
self.set_handlers()
self.load_aliases()
self.publish_aliases()
# keep aliases published
while self.running:
time.sleep(TTL)
https://github.com/george-hawkins/avahi-aliases-notes/blob/master/avahi-alias#L48
for name in sys.argv[1:]:
publish_cname(name)
try:
# Just loop forever
while 1: time.sleep(60)
except KeyboardInterrupt:
print("Exiting")
https://public.msli.com/lcs/jaf/publish_cnames.c
/** cnames should be a NULL-terminated array of alias hostnames for this host.
* Example invocation: const char * cnames = {"foo.local", "bar.local", NULL}; PublishAvahiCNames(cnames);
* Note that this function normally does not ever return!
*/
void PublishAvahiCNames(const char ** cnames)
我已经确认,如果设置 CNAME 的过程结束,那么 CNAME 就会消失,但我在 avahi 或 dbus 上找不到任何文档来说明为什么这些工具需要永远存在。我的使用dbus-monitor
并没有显示出任何明显的脚本为保持 CNAME 活着所做的事情。
有谁知道这些脚本正在做什么以使已发布的 CNAME 在 avahi 中保持活动状态?
客户端什么都不做,只是保持与 D-Bus 的连接。如果他们消失了,服务器会清理他们的条目,参见。dbus-protocol.c: