在命令行取代 DNS(而不是直接编辑 /etc/dhcp/dhclient.conf)?

在命令行取代 DNS(而不是直接编辑 /etc/dhcp/dhclient.conf)?

我知道我可以通过添加以下行来使用我选择的 DNS /etc/dhcp/dhclient.conf

$ supersede domain-name-servers 1.1.1.1, 1.0.0.1;

我可以验证是否使用了正确的 DNS,如下所示:

$ nmcli dev show | grep DNS
IP4.DNS[1]:        1.1.1.1
IP4.DNS[2]:        1.0.0.1

但我想自动设置我的机器(Ubuntu 18.04),因此希望避免/etc/dhcp/dhclient.conf直接编辑。 “简单”的解决方案是将附加到文件中:

echo "supersede domain-name-servers 1.1.1.1, 1.0.0.1;" | sudo tee -a /etc/dhcp/dhclient.conf

但这有一个缺点,如果安装脚本运行两次,该行将会重复。有没有既定的方法来做到这一点?

答案1

根据@Patrick 的评论,你可以这样做:

LINE='supersede domain-name-servers 1.1.1.1, 1.0.0.1;'
FILE=/etc/dhcp/dhclient.conf

grep -qF "${LINE}" "${FILE}" || echo ${LINE} | sudo tee --append "${FILE}"

我希望/期待会有一个标准接口dhclient或类似的接口,但如果它有效,它就有效。 :-)

相关内容