使用 avahi 时,主机如何知道它的名称是 hostname.local 还是 hostname-2.local

jpw*_*jpw 6 avahi

如果由于主机名与网络上的其他设备冲突而动态更改为 foo-2、foo-3 等,运行 avahi 的计算机如何确定并显示其自己的主机名?

当两台运行 avahi-daemon 并且在同一网络上的计算机(都具有主机名 = foo)时,正如预期的那样,它们可以通过 ssh asfoo.localfoo-2.local. 例如,主机名冲突由 avahi 正确处理。

但是,在两台机器上,命令都hostname返回foo. 因此,当 avahi 重命名主机名时,它不会动态更新。

什么命令将显示正确的(动态)主机名以访问计算机?

这些是移动设备,我想在每台设备上显示“我的主机名是 XXXX.local”,因此当存在多个设备时,用户知道要输入哪个主机名以转到“他们的”设备。

Aus*_*arn 3

跑步:

avahi-resolve -a <IP> | cut -f 2
Run Code Online (Sandbox Code Playgroud)

这将返回您传入的 IP 地址在 mDNS 上注册的主机名列表(每行一个)。如果您传入您自己的本地 IP,它将返回您注册的内容。在正常情况下,它应该返回与您的本地主机名(或任何增量主机名,如果存在冲突)恰好一行。

cut如果您在末尾删除该命令,则可以通过在第一个制表符处拆分并获取每行的第二部分,在自己的代码中自行解析这些行。

另外,您可能可以在 DBus 上进行一些调用来获取此信息,但如果有的话,我还没有找到有关它的任何信息。