lorsque vous utilisez avahi, comment un hôte peut-il savoir si son nom est hostname.local ou hostname-2.local

Comment un ordinateur exécutant avahi peut-il vérifier et afficher son propre nom d'hôte dans le cas où il serait dynamicment changé en foo-2, foo-3, etc. en raison de conflits de nom d'hôte avec d'autres périphériques du réseau?

Lorsque deux ordinateurs (à la fois avec hostname = foo) qui exécutent avahi-daemon et sont sur les mêmes réseaux, ils sont accessibles via ssh comme foo.local et foo-2.local . Par exemple, la collision du nom d'hôte est traitée correctement par avahi.

Cependant, sur les deux machines, la command hostname renvoie foo . Donc, ce n'est pas mis à jour dynamicment quand avahi est-il renommer nom d'hôte.

Quelle command affichera le nom d'hôte correct (dynamic) pour accéder à un ordinateur?

Ce sont des appareils mobiles, et je veux afficher "mon nom d'hôte est XXXX.local" sur chaque périphérique, donc quand plus d'un périphérique est présent, l'user sait QUI nom d'hôte à entrer pour aller à "leur" périphérique.

    Courir:

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

    Cela renverra une list de noms d'hôtes (un par ligne) enregistrés sur mDNS pour l'adresse IP que vous avez transmise. Si vous transmettez votre propre adresse IP locale, il returnnera ce que vous avez enregistré. Dans des circonstances normales, il doit renvoyer exactement une ligne avec votre nom d'hôte local (ou tout autre nom d'hôte incrémentiel s'il y a eu des collisions).

    Si vous supprimez la command de cut à la fin, vous pouvez simplement parsingr les lignes vous-même dans votre propre code en séparant le premier caractère de tabulation et en prenant la deuxième partie de chaque ligne.

    En outre, il peut y avoir un appel que vous pouvez faire sur DBus pour get cette information, mais si c'est le cas, je n'ai trouvé aucune information à ce sujet.