avahiを使用するとき、ホストは名前がホスト名.localであるか、ホスト名-2.localであるかをどうやって知ることができますか?

avahiを使用するとき、ホストは名前がホスト名.localであるか、ホスト名-2.localであるかをどうやって知ることができますか?

avahiを実行しているコンピュータがネットワーク上の他のデバイスとのホスト名の競合のためにfoo-2、foo-3などに動的に変更された場合、どのように自分のホスト名を確認して表示できますか?

両方のマシン(すべてのホスト名がfoo)がavahi-daemonを実行し、同じネットワーク上にある場合は、期待どおりにsshを介してfoo.localアクセスできますfoo-2.local。たとえば、avahiはホスト名の競合を正しく処理しています。

ただし、コマンドは両方のシステムからhostname返されますfoo。したがって、avahiがホスト名を変更すると、動的に更新されません。

どのコマンドが表示されますか?正しい(動的)コンピュータのホスト名にアクセスしますか?

これはモバイルデバイスであり、複数のデバイスがあるときにユーザーが「自分の」デバイスにアクセスするために入力する必要があるホスト名を知ることができるように、各デバイスに「自分のホスト名はXXXX.localです」と表示したいと思います。

答え1

ランニング:

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

転送したIPアドレスに対して、mDNSに登録されているホスト名のリスト(1行に1つ)が返されます。自分のローカルIPを転送すると、登録した内容が返されます。一般的な状況では、ローカルホスト名(または競合がある場合は増分ホスト名)と同じ行を返す必要があります。

cut最後にそのコマンドを削除すると、最初のタブで分割して各行の2番目の部分を取得し、自分のコードから直接行を解析できます。

そして、そして可能この情報を得るためにDBusに電話をかけることができますが、それに関する情報は見つかりませんでした。

関連情報