Estoy trabajando en algunos scripts de automatización para configurar la configuración de mi red, el contenido de los archivos de host y / etc / resolver archivos, cuando accedo a diferentes redes que frecuenta.
Pueden ocurrir algunas combinaciones que requieren cambios en el archivo de hosts, y me gustaría evitar tener que configurar una matriz de combinaciones diferentes, duplicando las configuraciones compartidas por todas partes.
Por ejemplo, puedo estar en la red de trabajo, es decir. en el edificio, o puedo acceder 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, otras no. Además, si estoy sobre VPN, puedo estar en casa, en cuyo caso hay otras configuraciones en el archivo de hosts que también quiero agregar.
Como tal, esperaba que en lugar de crear un archivo para "inicio, acceder al trabajo a través de VPN" frente a "inicio, no acceder al trabajo", etc., ¿hay alguna forma de incluir otros archivos?
Por ejemplo, digamos que la siguiente sintaxis hipotética funciona:
#!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.
O, salvo eso, ¿hay una mejor manera de hacer esto que simplemente construir un pequeño script que concatena 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 individuales a partir de esos archivos adicionales
fuente
dscl
directamente?dscl
comando, tendré que investigar sobre eso también.dscl
, para lo cual/etc/hosts
es simplemente una de las fuentes de datos disponibles, proporcionando (por supuesto) asignaciones de nombre de host / dirección IP. Configurar una secuencia de comandos que escribadscl
y vacíe la memoria caché podría funcionar mejor en su situación que mantener varias copias del archivo de hosts o reescribirlo todo el tiempo.Respuestas:
No conozco ninguna posibilidad de inclusión. Sin embargo, lo que haría 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í
Editar: Agregar en un intento rápido de modificar los campos.
Eliminando el comentario para HOME.HOSTS
Volver a poner los comentarios para HOME.HOSTS
Esta es una versión básica y debe ajustarse a sus necesidades.
fuente
sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^#\([^%]\)/\1/g' hosts
y sobre la sección en el archivo de hosts por favor? Realmente no entiendo por qué :(sed
que agregue o elimine un # al comienzo de las líneas entre dos líneas # %%%. Esto comentará o descomentará las líneas. El ejemplo muestra cómo comentar la sección HOME.HOSTS usando # %%% HOME.HOSTS; en su lugar, debe usar # %%% WORK.HOSTS en el comando sed para comentar o descomentar la sección WORK.HOSTS.Dado que dscl ya no funciona debido al cambio a OpenDirectoryService, una opción es usar ghost:
... agregará esta sección en / etc / hosts:
Para borrar la sección #ghost del uso del archivo de hosts (esto facilita el reemplazo de la lista de hosts por una nueva):
Puede encontrar más información sobre fantasmas aquí: https://github.com/bjeanes/ghost
fuente
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 de Karolos anterior es una posible solución. Mi acercamiento está aquí.
1- refiérase a http://apple.stackexchange.com/q/139267/74657
2- archivos host creados para cada ubicación (hosts.work, hosts.home, hosts.vendor)
3- Usando el script 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 de Karolos anterior utilizando sed para actualizar el archivo existente al conectarse a un SSID específico que puede detectar y ejecutar fácilmente utilizando el script de soloz mencionado anteriormente.
Espero que esto ayude a cualquiera que se encuentre con el tema.
fuente