Avahi

使用avahi時,主機如何知道它的名稱是hostname.local還是hostname-2.local

  • September 7, 2017

如果由於主機名與網路上的其他設備衝突而動態更改為 foo-2、foo-3 等,執行 avahi 的電腦如何確定並顯示其 OWN 主機名?

當執行 avahi-daemon 且位於同一網路上的兩台電腦(均具有主機名 = foo)時,正如預期的那樣,它們可以通過 sshfoo.localfoo-2.local. 例如,avahi 正在正確處理主機名衝突。

但是,在兩台機器上,命令都hostname返回foo. 因此,當 avahi 進行主機名重命名時,它不會動態更新。

什麼命令將顯示訪問電腦的正確(動態)主機名?

這些是移動設備,我想在每台設備上顯示“我的主機名是 XXXX.local”,因此當存在多個設備時,使用者知道要輸入哪個主機名才能訪問“他們的”設備。

跑:

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

這將返回在 mDNS 上為您傳入的 IP 地址註冊的主機名列表(每行一個)。如果您傳入自己的本地 IP,它將返回您註冊的內容。在正常情況下,它應該只返回一行與您的本地主機名(或任何增量主機名,如果有衝突)。

如果您cut在最後刪除該命令,您可以通過在第一個製表符處拆分並獲取每行的第二部分來自己在自己的程式碼中解析這些行。

此外,您可能會在 DBus 上撥打一些電話以獲取此資訊,但如果有,我還沒有找到任何有關它的資訊。

引用自:https://unix.stackexchange.com/questions/265426