我有一个 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
例如)。这会比较棘手,因为您需要找出最后添加的环回地址并增加它。如果我找到足够简单的方法,我会为此添加一种方法。