como modificar / etc / hosts de scripts de shell?

5

Eu preciso alterar algumas hosts entradas - por exemplo, há um desejo de atualizar hosts para que active.vm host corresponda ao IP da VM atualmente inicializada (com algum dispositivo de teste). O software convidado na VM relata o endereço da máquina de volta ao host, e eu preciso atualizar o / etc / hosts com base nessas informações - há sempre algum tempo para escrever outro daemon / cronjob, mas queria usar algo existente para corrigir hosts entradas com um sintaxe idiota de hostname current_ip .

Alguém me recomendou o pacote bind-tools , mas - seu nsupdate | host não é adequado para a tarefa. ..

Upd: ainda procurando por algo do bind suite, mas pelo menos a regeneração dinâmica parece ser a melhor solução, e o augtool também é legal.

Upd: devido à minha preguiça, a regeneração dinâmica não está planejada para uso agora, então comecei a usar o augtool no cronjob, que lê os logs de acesso do servidor web para o IP mais recente - nas VMs que executam o Windows, toda a solução de monitoramento é apenas um webbrowser que carrega url específico da máquina host e tem um pequeno intervalo de recarga

    
por kagali-san 19.06.2011 / 20:34

2 respostas

7

Dê uma olhada no augeas . Ele tem um parser / serializador pronto para o arquivo hosts (que é mesmo em seu guia rápido) e vem com uma ferramenta simples para fazer alterações (augtool).

    
por 19.06.2011 / 21:26
8

Prefiro não tocar em /etc/hosts em termos de análise e tal. Eu simplesmente criaria /etc/hosts.d para criar um script que leva:

  • ip
  • nome
  • aliases

cria um (1) arquivo com uma (1) linha. O nome do arquivo será <ip>.host e, em seguida, cat /etc/hosts.d/*host > /tmp/hosts.new ** mv /tmp/hosts.new /etc/hosts . Talvez adicione um evento de incron que observe o diretório /etc/hosts.d e seja gerado sempre que algo acontecer, assim você também se livrará de entradas antigas.

    
por 19.06.2011 / 20:39