如何通过 bash 脚本将 DNS 插入 /etc/hosts?

如何通过 bash 脚本将 DNS 插入 /etc/hosts?

我有一个 bash 脚本runmydocker.sh,它应该在运行时获取开发人员发送的 DNS 字符串,runmydocker.sh并在其中动态创建一个新的 DNS/etc/hosts并指向 docker 服务器。

流程如下:

  • 获取用户发送的 DNS 并将其存储到 MYDNS 变量中
  • 复制当前主机的内容
  • 插入 127.0.0.1 $MYDNS
  • 调用 docker run ....

因此用户应该做类似的事情:

./runmydocker.sh mysite.com

当它写入 URL mysite.com 时,它应该使用 docker 服务器。

所以我的问题是如何将这个新的 DNS 插入/etc/hosts

答案1

假设你的脚本以 root 身份运行,你可以执行以下操作:

sed -i '/^127\.0\.0\.1\s/s/$/ '"$1"'/' /etc/hosts

$1是脚本的第一个参数(mysite.com对于问题中的示例)。此命令查找文件127.0.0.1中包含的行hosts并将新域附加到其中。

你不应该添加多行127.0.0.1,因为它可能会可能导致问题

更好的方法是 Ubuntu 安装程序所做的 - 在环回范围内添加一个新地址(127.0.1.1例如)。这会比较棘手,因为您需要找出最后添加的环回地址并增加它。如果我找到足够简单的方法,我会为此添加一种方法。

相关内容