En lugar de tener un enlace simbólico a un archivo de host (remoto), es mejor actualizar la copia local con la información del remoto. De esa manera, en caso de interrupción de la red, o si el host "maestro" está inactivo, todavía tiene el archivo local / etc / hosts.
Debería, en cada archivo local / etc / hosts, una "estructura" para separar información local y global.
ejemplo de archivo 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: ...........)
........................
........................
Y puede reemplazar el resto del archivo (siempre después de la línea "# before: local after: global ....") con la información "global", tomada de un archivo remoto dedicado a alojar la información global "validada" (ej .: remotehost: /etc/hosts_global_informations.master), o recuperado SOLO de la "parte global" del archivo maestro / etc / hosts (ej: remotehost: / etc / hosts).
Los específicos para recuperar esas informaciones son varios, dependiendo de lo que esté disponible para usted.
Un ejemplo: en su shell puede hacerlo manualmente como tal: (esto supone que todo el archivo / etc / hosts contiene el mismo separador, que es una línea que coincide con la expresión regular "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
Y luego reemplace / etc / hosts con / etc / newlocalhosts UNA VEZ QUE ESTÁ SEGURO de que el nuevo es correcto (tenga cuidado: compruebe que el ssh estaba bien, por ejemplo, ¡ya que podría fallar si la red falla!). Si es correcto, podría:
cat /etc/newlocalhosts > /etc/hosts #this will keep the settings (mode, etc) of /etc/hosts but replace its content.