Estou trabalhando em alguns scripts de automação para definir minhas configurações de rede, hospedar o conteúdo do arquivo e / etc / resolvedor, ao acessar redes diferentes que frequento.
Existem algumas combinações que podem exigir 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, ou seja. no prédio, ou eu posso acessá-lo através da VPN. Nos dois casos, preciso adicionar algumas configurações ao arquivo hosts para que a rede funcione corretamente, algumas são compartilhadas, outras não. Além disso, se eu estou usando a VPN, posso estar em casa; nesse caso, há outras configurações no arquivo de hosts que também quero adicionar.
Como tal, eu esperava que, em vez de criar um arquivo para "casa, acesso ao trabalho pela VPN" vs. "casa, não acesso ao trabalho" etc., houvesse 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
Dessa forma, eu poderia simplesmente limpar o conteúdo de um ou de ambos os arquivos extras e deixar o resto.
Ou, exceto, existe uma maneira melhor de fazer isso do que apenas criar um pequeno script que concatene arquivos como aqueles em um novo arquivo de hosts e, como parte da minha configuração de automação, limpei primeiro alguns desses arquivos extras, e então invoco o script para reconstruir o arquivo de hosts únicos a partir desses arquivos extras?
fonte
dscl
diretamente?dscl
comando, vou ter que pesquisar sobre isso também.dscl
, dos quais/etc/hosts
é simplesmente uma das fontes de dados disponíveis, fornecendo (é claro) mapeamentos de nome de host / endereço IP. A configuração de um script que gravadscl
e libera o cache pode funcionar melhor em sua situação do que manter várias cópias do arquivo hosts ou reescrevê-lo o tempo todo.Respostas:
Não conheço nenhuma possibilidade de inclusão. O que eu faria, no entanto, é criar seções no meu arquivo hosts e, em seguida, usar um script para comentar as linhas em cada seção usando, por exemplo, sed.
Dessa forma, seu arquivo ficaria assim
Editar: adicionando uma tentativa rápida de modificar os campos.
Removendo o comentário para HOME.HOSTS
Retornando os comentários para HOME.HOSTS
Esta é uma versão básica e precisa ser ajustada às suas necessidades.
fonte
sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^#\([^%]\)/\1/g' hosts
e sobre a seção no arquivo hosts, por favor. Eu realmente não entendo o porquê :(sed
para adicionar ou remover um # no início das linhas entre duas linhas # %%%. Isso irá comentar ou cancelar o comentário das linhas. O exemplo mostra como comentar a seção HOME.HOSTS usando # %%% HOME.HOSTS; você deve usar # %%% WORK.HOSTS no comando sed para comentar ou cancelar o comentário da seção WORK.HOSTS.Como o dscl não está mais funcionando devido à mudança para o OpenDirectoryService, uma opção é usar o ghost:
... adicionará esta seção no / etc / hosts:
Para limpar a seção #ghost do arquivo de hosts, use (isso facilita a substituição da lista de hosts por uma nova):
Você pode encontrar mais informações sobre o fantasma aqui: https://github.com/bjeanes/ghost
fonte
Eu tive um caso de uso semelhante quando precisei acessar serviços em três locais diferentes usando configurações diferentes de LAN / WAN no arquivo de hosts. A resposta de Karolos acima é uma solução possível. Minha abordagem está aqui.
1- ref a http://apple.stackexchange.com/q/139267/74657
2 - arquivos hosts criados para cada local (hosts.work, hosts.home, hosts.vendor)
3- Usando o script do soloz, aqui ( https://github.com/slozo/Network-listener ) sempre que eu conectar à rede doméstica, eu executo um script simples para alternar o arquivo hosts.
método mais simples seria
mv hosts.home /etc/hosts
Como alternativa, você pode automatizar a resposta de Karolos acima usando sed para atualizar o arquivo existente ao se conectar a um SSID específico, que você pode detectar e executar facilmente usando o script de soloz mencionado acima.
espero que ajude alguém que tropeça no assunto.
fonte