ao usar avahi, como um host pode saber se o nome é hostname.local ou hostname-2.local

5

Como um computador que executa o avahi pode verificar e exibir seu próprio nome de host no caso de ser alterado dinamicamente para foo-2, foo-3, etc devido a conflitos de nome de host com outros dispositivos na rede?

Quando dois computadores (ambos com hostname = foo) que estão executando o avahi-daemon e estão nas mesmas redes, como esperado, eles podem ser acessados via ssh como foo.local e foo-2.local . Por exemplo, a colisão do nome do host está sendo tratada corretamente pelo avahi.

No entanto, nas duas máquinas, o comando hostname retorna foo . Portanto, isso não é atualizado dinamicamente quando o avahi renomeia o nome do host.

Qual comando mostrará o nome do host correto (dinâmico) para acessar um computador?

São dispositivos móveis e desejo exibir "meu nome de host é XXXX.local" em cada dispositivo. Quando mais de um dispositivo estiver presente, o usuário saberá o nome do host a ser inserido para acessar "seu" dispositivo.

    
por jpwynn 24.02.2016 / 08:02

1 resposta

1

Executar:

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

Isto irá retornar uma lista de nomes de host (um por linha) registrados no mDNS para o endereço IP que você passou. Se você passar em seu próprio IP local, ele retornará o que você registrou. Em circunstâncias normais, ele deve retornar exatamente uma linha com seu nome de host local (ou qualquer nome de host incremental se houver colisões).

Se você remover o comando cut no final, poderá simplesmente analisar as próprias linhas em seu próprio código dividindo o primeiro caractere de tabulação e tomando a segunda parte de cada linha.

Além disso, pode ser alguma chamada que você possa fazer no DBus para obter essa informação, mas se houver, eu não encontrei nenhuma informação sobre isso.

    
por 07.09.2017 / 21:22

Tags