Arquivo “hosts” do Mac OS X, posso incluir outros arquivos nele?

10

Estou trabalhando em alguns scripts de automação para configurar minhas configurações de rede, conteúdo de arquivos de hosts e arquivos / etc / resolver, ao acessar redes diferentes que frequento entre.

Existem algumas combinações que podem ocorrer, todas exigindo alterações no arquivo hosts, e eu gostaria de evitar a necessidade de configurar uma matriz de combinações diferentes, duplicando as configurações compartilhadas em todo o lugar.

Por exemplo, eu posso estar na rede de trabalho, ie. no prédio, ou eu posso acessá-lo através de VPN. Em ambos os casos, preciso adicionar algumas configurações ao arquivo de hosts para que a rede funcione corretamente, algumas são compartilhadas, outras não. Além disso, se eu for sobre VPN, posso estar em casa, caso em que há algumas outras configurações no arquivo de hosts que eu também quero adicionar.

Como tal, eu esperava que, em vez de criar um arquivo para "casa, acesso ao trabalho via VPN" versus "casa, não acessar o trabalho", etc., haja uma maneira de incluir outros arquivos?

Por exemplo, digamos que a seguinte sintaxe hipotética funcione:

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

127.0.0.1 localhost
::1 localhost

Desta forma, eu poderia simplesmente limpar o conteúdo de um ou ambos desses dois arquivos extras, e deixar o resto em segredo.

Ou, salvo isso, existe uma maneira melhor de fazer isso do que apenas construir um pequeno script que concatena arquivos como esses em um novo arquivo hosts, e como parte da minha configuração de automação, eu primeiro limpo alguns desses arquivos extras e, em seguida, invoco o script para reconstruir o arquivo de hosts únicos desses arquivos extras?

    
por Lasse Vågsæther Karlsen 22.01.2012 / 14:07

3 respostas

7

Não tenho conhecimento de nenhuma possibilidade de inclusão. O que eu faço, no entanto, é fazer seções no meu arquivo de hosts e, em seguida, usar um script para comentar as linhas em cada seção usando, por exemplo, sed.

Dessa forma, seu arquivo ficaria parecido com

#%%%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: adicionando uma rápida tentativa de modificar os campos.

Removendo o comentário para HOME.HOSTS

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

Colocando os comentários para HOME.HOSTS

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

Esta é uma versão básica e precisa ser ajustada às suas necessidades.

    
por 22.01.2012 / 15:36
0

Como o dscl não está mais funcionando devido à mudança para o OpenDirectoryService, uma opção é usar o ghost:

sudo gem install ghost

sudo ghost add fw.test.se 10.0.0.1

... irá adicionar esta seção no / etc / hosts:

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

Para limpar a seção #ghost do uso do arquivo de hosts (isso facilita a substituição da lista de hosts por um novo):

sudo ghost empty

Você pode encontrar mais informações sobre o fantasma aqui: link

    
por 07.02.2017 / 14:41
0

Eu tive um caso de uso semelhante quando precisei acessar serviços em três locais diferentes usando configurações LAN / WAN diferentes no arquivo de hosts. A resposta de Karolos acima é uma solução possível. Minha abordagem está aqui.

1- ref para link

2 - cria arquivos de hosts para cada local (hosts.work, hosts.home, hosts.vendor)

3- Usando o script do soloz, aqui ( link ) sempre que eu conecto a rede doméstica, eu executo script simples para alternar o arquivo hosts.

método mais simples seria

mv hosts.home /etc/hosts

alternadamente, você pode automatizar a resposta de Karolos acima usando sed para atualizar o arquivo existente ao conectar-se ao SSID específico, que pode ser detectado e executado facilmente usando o script do soloz mencionado acima.

Espero que ajude alguém a se deparar com a questão.

    
por 16.05.2017 / 08:04