Arquivo de hosts por usuário

14

Existe uma maneira de definir aliases de host (como em /etc/hosts ) por usuário, ou seja, em um arquivo /home/user/.hosts ?

Meu principal objetivo é compartilhar facilmente aliases de host via rsync entre as máquinas na minha pequena lan. Como não há máquina que seja sempre conectada de forma confiável, um servidor DNS não é uma opção (certo?).

Obrigado.

    
por mrucci 29.11.2009 / 13:53

6 respostas

8

Uma solução melhor seria instalar Avahi e libnss-mdns e, em seguida, usar HOSTNAME.local endereços.

Esses nomes não seriam por usuário, mas resolveriam seu objetivo declarado de ter nomes comuns para todas as máquinas em uma LAN.

    
por 29.11.2009 / 17:19
2

A implementação do glibc no Linux não pode fazer isso.

Mas você poderia estendê-lo com uma biblioteca nss que poderia. Isso seria fácil de escrever, já que você poderia arrancar a parte relevante da libc que está no diretório nss_files em

link

Por exemplo

Isso, no entanto, seria uma coisa bastante estranha e fora do padrão.

    
por 29.11.2009 / 14:23
2

Veja link para obter uma maneira de fazer exatamente o que você deseja.

Essa é uma biblioteca pequena, carregada via LD_PRELOAD e que substitui gethostbyname () e várias funções relacionadas que os programas usam para resolução de DNS. Isso funciona bem para mim. A única ressalva que descobri é que o navegador da Web Chrome não usa resolução nativa de DNS, mas implementa seu próprio cliente DNS. Para resolver esse problema, você precisa desativar o cliente DNS do Chrome .

    
por 10.09.2014 / 02:45
0

Se você tivesse duas máquinas que ficariam funcionando a maior parte do tempo, você poderia se levantar em BIND em cada uma delas e torná-las os servidores DNS ... ou obter um desses ( link ).

Use o BIND para servir sempre o seu DNS.

    
por 29.11.2009 / 21:48
0

Como as outras respostas nesta página descrevem, existem maneiras de obter uma funcionalidade semelhante, mas:

Não, não há arquivo "por usuário" como /etc/hosts ou qualquer outra forma de substituir a resolução de nomes padrão como um usuário não privilegiado no GNU / Linux.

    
por 15.05.2015 / 00:45
-1

Parece muito mais fácil escrever um script que elabore quais hosts estão ativos e, em seguida, define o nome do host para o seguinte comando rsync. Algo parecido com isto

#!/usr/bin/sh

HOST="none"
TESTFILE=/tmp/testfile.$$
touch $TESTFILE
for i in hosta hostb hostc olivia
do
    scp $TESTFILE $i:/tmp
    if [ $? -eq 0 ]
    then
        HOST=$i
    fi
done
rm $TESTFILE

if [ $HOST != "none" ]
then
    echo $HOST is up
    rsync -av --rsh=ssh files $HOST:/dest
else
    echo "No host found"
    exit 1
fi

Isso não foi testado e tem suposições, então você terá que modificá-lo para se adequar.

    
por 29.11.2009 / 14:40