Как вставить DNS в / etc / hosts через bash-скрипт?

У меня есть скрипт bash runmydocker.sh, который должен захватывать строку DNS, отправленную разработчиком, при запуске он runmydocker.sh и динамически создавать новый DNS внутри /etc/hosts и указывать на док-сервер.

Это поток:

  • захватывает DNS, отправленный пользователем, и сохраняет его в переменной MYDNS
  • , копирует содержимое текущих хостов
  • вставьте 127.0.0.1 $ MYDNS
  • запуск докера вызовов ....

Таким образом, пользователь должен сделать что-то вроде этого:

./runmydocker.sh mysite.com

И когда он пишет URL mysite.com, он должен использовать докер-сервер.

Итак, мой вопрос здесь, как вставить этот новый DNS в /etc/hosts?

0
задан 21 November 2017 в 01:42

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). Это будет сложнее, так как вам нужно выяснить последний добавленный адрес обратной связи и увеличить его. Я добавлю метод для этого, если найду что-то достаточно простое.

1
ответ дан 21 November 2017 в 01:42

Другие вопросы по тегам:

Похожие вопросы: