¿Hay alguna forma de definir alias de host (como en /etc/hosts
) por usuario, es decir, en un archivo /home/user/.hosts
?
Mi objetivo principal es compartir fácilmente alias de host a través de rsync entre las máquinas en mi pequeño lan. Como no hay una máquina que siempre esté conectada de manera confiable, un servidor DNS no es una opción (¿verdad?).
Gracias.
linux
local-area-network
hosts
mrucci
fuente
fuente
alias ssh="ssh "
su .bashrc (observe el espacio en blanco al final del alias) junto conalias myhost="[email protected]"
y luego puede decirssh myhost
y funcionará.~/.ssh/config
donde agrega las líneas:Host my-host
yHostname 10.0.0.xxx
<- IP de la máquina. Lo bueno es que también te permite especificar el nombre de usuario, el puerto, qué clave usar, etc.Respuestas:
Una mejor solución sería instalar Avahi y libnss-mdns, y luego usar
HOSTNAME.local
direcciones.Estos nombres no serían por usuario, pero resolverían su objetivo declarado de tener nombres comunes para todas las máquinas a través de una LAN.
fuente
ping hostnameAlias
) sin privilegios de root. Avahi casi hace el trabajo correcto, porque puedo usar la máquina $ HOSTNAME como un alias. Solo por curiosidad: ¿dónde se realiza este mapeo?Consulte https://github.com/figiel/hosts para ver cómo hacer exactamente lo que le pide.
Es una biblioteca pequeña, cargada a través de LD_PRELOAD y que anula gethostbyname () y varias funciones relacionadas que los programas usan para la resolución de DNS. Funciona bien para mi La única advertencia que encontré es que el navegador web Chrome no usa resolución DNS nativa, sino que implementa su propio cliente DNS. Para resolver ese problema, debe deshabilitar el cliente DNS de Chrome .
fuente
La implementación de Linux glibc no puede hacer eso.
Pero podría extenderlo con una biblioteca nss que podría. Esto sería fácil de escribir, ya que podría estafar la parte relevante de libc que está en el directorio nss_files en
http://ftp.gnu.org/gnu/glibc/glibc-2.5.tar.bz2
Por ejemplo
Sin embargo, esto sería una cosa no estándar bastante extraña.
fuente
Si tuviera dos máquinas que estarían en funcionamiento la mayor parte del tiempo, podría poner BIND en cada una de ellas y convertirlas en servidores DNS ... u obtener una de estas ( http://www.marvell.com/products/embedded_processors/ desarrollador / kirkwood / sheevaplug.jsp ).
Use BIND en él para servir su DNS siempre en.
fuente
Como describen las otras respuestas en esta página, hay formas de lograr una funcionalidad similar, pero:
No, no existe un archivo "por usuario" como
/etc/hosts
o cualquier otra forma de anular la resolución de nombre predeterminada como usuario no privilegiado en GNU / Linux.fuente
Parecería mucho más fácil escribir un script que determine qué hosts están activos y luego establezca el nombre de host para el siguiente comando rsync. Algo como esto
Esto no se ha probado y tiene suposiciones, por lo que deberá modificarlo para adaptarlo.
fuente
rsync src olivia:/dst