如果运行 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 上拨打一些电话来获取此信息,但如果有的话,我还没有找到有关它的任何信息。