Como inserir um DNS em / etc / hosts através de um script bash?

0

Eu tenho um script bash runmydocker.sh que deve pegar a string DNS enviada pelo desenvolvedor, ao executar ele runmydocker.sh e criar um novo DNS dentro do /etc/hosts dinamicamente e apontar para o servidor docker.

Este é o fluxo:

  • pegue o DNS enviado pelo usuário e armazene-o em uma variável MYDNS
  • copie o conteúdo dos hosts atuais
  • insira 127.0.0.1 $ MYDNS
  • o docker de chamadas é executado ...

Para que o usuário faça algo assim:

./runmydocker.sh mysite.com

E quando ele escreve o URL mysite.com, ele deve estar usando o servidor docker.

Então, minha pergunta aqui é como inserir esse novo DNS em /etc/hosts ?

    
por zwitterion 20.11.2017 / 21:00

1 resposta

1

Supondo que seu script seja executado como root, você poderia fazer:

sed -i '/^127\.0\.0\.1\s/s/$/ '"$1"'/' /etc/hosts

$1 é o primeiro argumento do script ( mysite.com para o exemplo na pergunta). Este comando consulta a linha que contém 127.0.0.1 no arquivo hosts e acrescenta o novo domínio a ele.

Você não deve adicionar várias linhas com 127.0.0.1 , pode causar problemas .

Uma maneira melhor é o que o instalador do Ubuntu faz - adiciona um novo endereço no intervalo de loopback ( 127.0.1.1 , por exemplo). Isso vai ser mais complicado, já que você precisará descobrir o último endereço de loopback adicionado e incrementá-lo. Vou adicionar um método para isso se eu encontrar algo simples o suficiente.

    
por Olorin 21.11.2017 / 05:30