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

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

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

当两台计算机(主机名均为 foo)运行 avahi-daemon 并且位于同一网络时,正如预期的那样,它们可以通过 ssh asfoo.local和进行访问foo-2.local。例如,avahi 正在正确处理主机名冲突。

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

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

这些是移动设备,我想在每个设备上显示“我的主机名是XXXX.local”,这样当存在多个设备时,用户就知道要输入哪个主机名才能进入“他们的”设备。

答案1

跑步:

avahi-resolve -a <IP> | cut -f 2

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

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

还有,还有可能您可以在 DBus 上拨打一些电话来获取此信息,但如果有的话,我还没有找到有关它的任何信息。

相关内容