Em vez de ter um link simbólico para um arquivo de hosts (remoto), é melhor atualizar a cópia local com as informações do controle remoto. Dessa forma, em caso de falha de rede, ou o host "master" está inativo, você ainda tem o arquivo local / etc / hosts.
Você deve, em cada arquivo / etc / hosts local, uma "estrutura" para separar informações locais e globais.
exemplo do arquivo local / etc / hosts:
# local informations:
127.0.0.1 localhost otherhandylocalalias
# specificly needed aliases for this host:
1.2.3.4 some_specific.host.domain
# before:local after:global informations (copied from: ...........)
........................
........................
E você pode substituir o resto do arquivo (everyuthing após a linha "# before: local after: global ....") com as informações "globais", obtidas de um arquivo remoto dedicado ao host. "arquivo de informações globais (ex: remotehost: /etc/hosts_global_informations.master), ou recuperado APENAS a partir da" parte global "do arquivo mestre / etc / hosts (ex: remotehost: / etc / hosts).
O específico para recuperar essas informações é diferente, dependendo do que está disponível para você.
Um exemplo: no seu shell, você poderia fazê-lo manualmente da seguinte forma: (isso pressupõe que todo o arquivo / etc / hosts contenha o mesmo separador, que é uma linha que corresponde ao regexp "zesep":
export zesep='# before:local after:global .*'
#this allows you to complete the line in each /etc/hosts with non-global informations!
awk "/${zesep}/,0 { continue } 1 { print }" </etc/hosts >/etc/newlocalhosts
ssh user@remotehost 'cat /etc/hosts' | awk "/${zesep}/,0 { print } " >> /etc/newlocalhosts
E então substitua / etc / hosts com / etc / newlocalhosts UMA VEZ QUE ESTEJA CERTO de que o novo está correto (cuidado: verifique se o ssh estava ok, por exemplo, pois ele pode falhar se a rede falhar!). Se estiver correto, você pode:
cat /etc/newlocalhosts > /etc/hosts #this will keep the settings (mode, etc) of /etc/hosts but replace its content.