dhclient 进入/退出钩子以更新 resolv.conf

dhclient 进入/退出钩子以更新 resolv.conf

我想将以下行附加到我们的 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都设置为调用脚本的原因的名称。目前定义了以下原因: MEDIUMPREINITBOUNDRENEWREBINDREBOOTEXPIREFAILSTOPRELEASENBITIMEOUT

脚本的一个简单修复方法是仅在该行尚不存在时添加该行。更好的解决方法是匹配$reason适当的 case 值。

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

相关内容