Archivo "hosts" de Mac OS X, ¿puedo incluir otros archivos con él?

Archivo "hosts" de Mac OS X, ¿puedo incluir otros archivos con él?

Estoy trabajando en algunos scripts de automatización para configurar mis ajustes de red, el contenido de los archivos de hosts y los archivos /etc/resolver, cuando accedo a diferentes redes que frecuento.

Hay algunas combinaciones que pueden ocurrir y todas requieren cambios en el archivo de hosts, y me gustaría evitar tener que configurar una matriz de diferentes combinaciones, duplicando las configuraciones compartidas por todas partes.

Por ejemplo, puedo serenla red de trabajo, es decir. en el edificio, o puedo acceder a él a través de VPN. En ambos casos, necesito agregar algunas configuraciones al archivo de hosts para que la red funcione correctamente, algunas son compartidas y otras no. Además, si estoy a través de VPN, es posible que esté en casa, en cuyo caso hay otras configuraciones en el archivo de hosts quetambiénquiero agregar.

Como tal, esperaba que en lugar de crear un archivo para "hogar, acceder al trabajo a través de VPN" versus "hogar, no acceder al trabajo", etc., ¿hay alguna manera de incluir otros archivos?

Por ejemplo, digamos que funciona la siguiente sintaxis hipotética:

#!include home.hosts
#!include work.hosts

127.0.0.1 localhost
::1 localhost

De esta manera, podría simplemente borrar el contenido de uno o ambos de esos dos archivos adicionales y dejar el resto en paz.

O, salvo eso, ¿hay una mejor manera de hacer esto que simplemente crear un pequeño script que concatene archivos como esos en un nuevo archivo de hosts y, como parte de mi configuración de automatización, primero borro algunos de esos archivos adicionales? ¿Y luego invoco el script para reconstruir el archivo de hosts único a partir de esos archivos adicionales?

Respuesta1

No conozco ninguna posibilidad de inclusión. Lo que haría, sin embargo, es crear secciones en mi archivo de hosts y luego usar un script para comentar las líneas en cada sección usando, por ejemplo, sed.

De esta manera su archivo se vería así

#%%%HOME.HOSTS%%%
#Put here the contents of home.hosts
#%%%WORK.HOSTS%%%
#Put here the contents of work.hosts

#%%%ALWAYS_ON%%%
127.0.0.1 localhost
::1 localhost

Editar:Agregando un intento rápido de modificar los campos.

Eliminando el comentario de HOME.HOSTS

 sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^#\([^%]\)/\1/g' hosts

Devolviendo los comentarios de HOME.HOSTS

 sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^\([^#]\)/#\1/g' hosts

Esta es una versión básica y debe ajustarse a sus necesidades.

Respuesta2

Dado que dscl ya no funciona debido al cambio a OpenDirectoryService, una opción es usar fantasma:

sudo gem install ghost

sudo ghost add fw.test.se 10.0.0.1

...agregará esta sección en /etc/hosts:

# ghost start
10.0.0.1 fw.start.se
# ghost end

Para borrar la sección #ghost del archivo de hosts, utilice (esto facilita reemplazar la lista de hosts por una nueva):

sudo ghost empty

Puedes encontrar más información sobre el fantasma aquí: https://github.com/bjeanes/ghost

Respuesta3

Tuve un caso de uso similar cuando necesitaba acceder a servicios en tres lugares diferentes usando diferentes configuraciones de LAN/WAN en el archivo de hosts. La respuesta anterior de Karolos es una posible solución. Mi enfoque está aquí.

1- ref ahttp://apple.stackexchange.com/q/139267/74657

2- archivos de hosts creados para cada ubicación (hosts.work, hosts.home, hosts.vendor)

3- Usando el guión de Soloz, aquí (https://github.com/slozo/Network-listener) cada vez que me conecto a la red doméstica, ejecuto un script simple para cambiar el archivo de hosts.

El método más simple sería

mv hosts.home /etc/hosts

Alternativamente, puede automatizar la respuesta anterior de Karolos usando sed para actualizar el archivo saliente al conectarse a un SSID específico que puede detectar y ejecutar fácilmente usando el script de Soloz mencionado anteriormente.

Espero que ayude a cualquiera que se encuentre con el tema en cuestión.

información relacionada