resolv.conf를 업데이트하기 위한 dhclient 항목/종료 후크

resolv.conf를 업데이트하기 위한 dhclient 항목/종료 후크

aws env에 있는 모든 서버의 resolv.conf에 다음 줄을 추가하고 덮어쓰지 않도록 하고 싶습니다.

options timeout:1 attempts:1 rotate

나는 이것을 달성하는 방법인 것처럼 보이는 dhclient 시작 및 종료 후크를 발견했습니다.

다음 내용으로 /etc/dhcp/dhclient-enter-hooks라는 Enter 후크를 배치하려고 했습니다.

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

dhclient를 실행하면 파일 시작 부분에 동일한 줄이 여러 번 추가됩니다. 때로는 처음에 몇 번, 끝에 몇 번. 출구 후크도 동일한 작업을 수행합니다.

이 줄이 resolv.conf에 한 번이 아닌 여러 번 추가되는 이유는 무엇입니까? 그리고 이 행동은 무작위입니다. 때로는 dhclient를 실행하는 동안 동일한 줄을 4번 추가합니다. 때로는 3 등입니다. 이를 수행하는 올바른 방법은 무엇입니까?

답변1

이것매뉴얼 페이지(8) dhclient-script행동은 신중하게 정의됩니다. 가능한 모든 작업에 대해 스크립트가 호출됩니다.

작업 클라이언트 구성 스크립트를 호출해야 하는 경우 dhclient환경에서 일련의 변수를 정의한 다음 를 호출합니다 CLIENTBINDIR/dhclient-script. 모든 경우에 $reason이러한 스크립트는 스크립트를 호출하는 이유의 이름으로 설정됩니다. 현재 정의 된 이유는 다음과 같습니다 : MEDIUM, PREINIT, BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL및 .STOPRELEASENBITIMEOUT

스크립트에 대한 간단한 수정은 해당 행이 아직 존재하지 않는 경우에만 해당 행을 추가하는 것입니다. 더 나은 해결책은 $reason적절한 케이스 값을 일치시키는 것입니다.

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

관련 정보