У меня есть скрипт bash runmydocker.sh
, который должен захватывать строку DNS, отправленную разработчиком, при запуске он runmydocker.sh
и динамически создавать новый DNS внутри /etc/hosts
и указывать на док-сервер.
Это поток:
Таким образом, пользователь должен сделать что-то вроде этого:
./runmydocker.sh mysite.com
И когда он пишет URL mysite.com, он должен использовать докер-сервер.
Итак, мой вопрос здесь, как вставить этот новый DNS в /etc/hosts
?
Предполагая, что ваш скрипт запускается от имени 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
). Это будет сложнее, так как вам нужно выяснить последний добавленный адрес обратной связи и увеличить его. Я добавлю метод для этого, если найду что-то достаточно простое.