dhclient entra / sai de ganchos para atualizar o resolv.conf

0

Eu gostaria de acrescentar a linha abaixo ao resolv.conf de todos os servidores em nosso aws env e ter certeza de que ele não seja sobrescrito

options timeout:1 attempts:1 rotate

Eu encontrei os ganchos de entrada e saída do dhclient, o que parecia ser o caminho para conseguir isso.

Eu tentei inserir hook com o nome / etc / dhcp / dhclient-enter-hooks com o conteúdo abaixo

 #!/bin/bash
 sed -i '$ a\options timeout:1 attempts:1 rotate' /etc/resolv.conf

E quando executo o dhclient, ele adiciona a mesma linha várias vezes ao início do arquivo. E às vezes, poucas vezes no começo e poucas vezes no final. O gancho de saída faz a mesma coisa.

Por que a linha é adicionada várias vezes ao resolv.conf, em vez de apenas uma vez? E esse comportamento é aleatório. Às vezes, adiciona a mesma linha 4 vezes durante a execução do dhclient. Às vezes 3 e assim por diante. Qual é a maneira correta de fazer isso?

    
por Being Gokul 20.01.2016 / 11:37

1 resposta

1

A página man para dhclient-script (8) define o comportamento cuidadosamente. Os scripts serão chamados para cada ação possível:

OPERATION When dhclient needs to invoke the client configuration script, it defines a set of variables in the environment, and then invokes CLIENTBINDIR/dhclient-script. In all cases, $reason is set to the name of the reason why the script has been invoked. The following reasons are currently defined: MEDIUM, PREINIT, BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL, STOP, RELEASE, NBI and TIMEOUT.

Uma correção fácil para o seu script seria adicionar a linha apenas se ela ainda não existir. Uma correção melhor seria corresponder a $reason para os valores de casos apropriados.

#!/bin/bash
grep -q '^options' /etc/resolv.conf ||
    echo 'options timeout:1 attempts:1 rotate' >>/etc/resolv.conf
true
    
por 20.01.2016 / 13:41