如何自动将Linux服务器资源通告给有任意操作系统的客户端?

我有一个Linux服务器,需要提供一些内部网的服务。 在networking环境中经常会有不熟悉使用笔记本电脑的用户,所以我想宣布他们可以直观地使用的服务。 理想情况下,当他们连接他们的机器到networking,他们会看到他们可以使用的服务,他们的操作系统将被通知可用的打印机等。

对于

  1. 用于文件共享的公共可访问文件夹(基于Samba,NFS或sshfs)
  2. 一些基于networking的工具,如状态监视器
  3. CUPS驱动的打印机
  4. networking扫描仪,

最好的办法是什么? 我愿意接受任何build议,而不是在这里采用任何特定的技术。

对于我的特定应用程序,安全性不是什么大问题,但可以随意讨论任何build议的安全含义。

为了向苹果机器宣布Samba的股份,这里已经有了答案,但是我不认为avahi / Bonjour能够解决所有问题。 另外,我不是一个Windows用户,但是我想微软已经有一些类似的协议,可以和Windows客户端更好地协作。

最简单的方法可能是通过DHCP发布DNS和search域,并确保人们可以通过在浏览器中inputhelp来获得一个很好的文档页面。 在这个页面中,您可以列出您的资源以及如何从他们的机器访问它们。

那么你只需要确保人们知道这个…

您可以通过Bonjour将特定网页发布到Mac(Safari中的书签> Bonjour)和Bonjour(IE中的Bonjourbutton)的Windows中。 这个答案给出了一般的方法,添加一个<txt-record>来在网页服务器的根目录之下发布一个页面。 如果你喜欢的话,我可以详细说明一下。

你应该看看零configurationnetworking(zeroconf)的各种方法。

特别是,你会得到两个主要家庭(你应该能够并肩使用):

  • mDNS和DNS-DS,它们倾向于更好地与Linux和OSX客户端集成。 以这种方式宣传您的服务的一种方法是在您的服务器上设置Avahi(请参阅您已经链接的答案)。 Windows客户端应该能够看到这些设备,如果他们安装Bonjour(从苹果公司提供,并与Safari安装,据我所知),但Windows不支持这个开箱即用。

  • UPnP和SSDP 。 SSDP或多或less相当于DNS-DS。 这在Windows客户端上本机支持。 我不确定是否有任何事实上的Linux“标准”服务器(比如Avahi),但似乎已经集成在许多需要它的应用程序中(比如媒体服务器),所以你可能会发现有用的库从那里实施你所需要的。