我想将以下行附加到我们的 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
、STOP
、RELEASE
和NBI
。TIMEOUT
脚本的一个简单修复方法是仅在该行尚不存在时添加该行。更好的解决方法是匹配$reason
适当的 case 值。
#!/bin/bash
grep -q '^options' /etc/resolv.conf ||
echo 'options timeout:1 attempts:1 rotate' >>/etc/resolv.conf
true