Как я могу получить /etc/hosts
файл для ссылки на другой файл конфигурации для списка хостов?
Пример /etc/hosts
:
## My Hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
#Other Configurations
<Link to /myPath/to/MyConfig/ConfigFile.txt>
#Other Addresses
3.3.3.3 MyAwesomeDomain.com
4.4.4.4 SomeplaceIWantToGoTo.com
ConfigFile.txt
##My additional Hosts
1.1.1.1 SomeLocation.com
2.2.2.2 AnotherLocation.com
Как добавить ссылку / ссылку на /etc/hosts
файл, чтобы файл ConfigFile.txt был загружен?
LC_COLLATE
), поэтому предостережение в вашем ответе не применяется.Это невозможно, так как формат обычно глубоко закодирован в libc платформ. Однако это можно себе представить , что ОС добавляет эту функцию, что делает его не кроссплатформенное решение.
Кроме того, вы можете автоматически обновить определенный блок в вашем файле hosts. Это особенно полезно, если у вас есть скрипт, который динамически выводит записи хоста для определенного проекта или около того (возможно, с изменением IP-адресов).
Вот пример: вы хотите создать хосты из состояния Terraform через
terraform-inventory
.Соответствующие данные инвентаризации (например, сопоставление тега «Имя» EC2 с группами по одному хосту в каждой):
print-updated-hosts-entries.sh
Вывод скрипта:
И командная строка для обновления помеченного блока
/etc/hosts
с выводом скрипта :Объяснение:
sed
вызова для печати всех строк до и после маркера начала / конца соответственно. Мы вставляем маркеры в любом случае, помещая вывод сценария между этими строками. Даже если скрипт завершится неудачно, нам все равно придется окружать содержимое/etc/hosts
(и резервное копирование в катастрофическом сценарии).sudo tee /etc/hosts.new
записывает содержимое канала в новый файлsed -n '/^# MYMARKER BEGIN/,/^# MYMARKER END/p'
печатает обновленный блок для удобстваsudo mv /etc/hosts.new /etc/hosts
перемещает новый файл на место Это должно быть сделано на отдельном шаге, потому что если в буфере конвейера не хватит места,tee /etc/hosts
начнется запись файла, пока существующий контент еще читается.источник
У меня было аналогичное требование для меня, чтобы работать без проблем из разных мест с динамическими IP-адресами, особенно с тех пор, как я использую виртуальные машины. Мое простое решение этого заключается в следующем:
Создайте скрипт для обновления записей хоста для каждой сущности. Например, если у меня есть хост с именем «myhost.net», с поддоменами «app.myhost.net», я бы вызвал этот скрипт и предоставил IP-адрес, который будет записан для каждого домена и сохранен в файле хоста с именем «мой хозяин». Этот же скрипт имеет флаг для удаления или обновления одного файла хоста.
Создайте другой скрипт для объединения этих файлов в / etc / hosts. Этот скрипт найдет все файлы хостов, которые вы создали, и объединит их в один файл хостов в / etc / hosts.
Это сработало для меня отлично. Я работаю удаленно, и иногда по какой-либо причине мне приходится перемещаться между локациями, и меня обременяет требование редактировать этот файл столько раз. Вместо этого я просто запускаю ОДИН скрипт. Да, один сценарий. Первый скрипт автоматически запускает другой, чтобы выполнить объединение автоматически.
источник