10

Я работаю над некоторыми сценариями автоматизации для настройки сетевых параметров, содержимого файлов хостов и файлов /etc /resolver при доступе к различным сетям, между которыми я часто бываю.

Могут возникнуть некоторые комбинации, которые требуют внесения изменений в файл hosts, и я бы хотел избежать создания матрицы различных комбинаций, повсеместно дублирующих общие настройки.

Например, я могу быть на работе сети, то есть. в здании, или я могу получить к нему доступ через VPN. В обоих случаях мне нужно добавить некоторые настройки в файл hosts для правильной работы сети, некоторые являются общими, некоторые нет. Кроме того, если я использую VPN, я могу быть дома, и в этом случае в файле хостов есть некоторые другие настройки, которые я также хочу добавить.

Поэтому я надеялся, что вместо того, чтобы создать один файл для «дома, доступа к работе через VPN» и «дома, не доступа к работе» и т.д., Есть ли способ включить другие файлы?

Например, допустим, работает следующий гипотетический синтаксис:

#!include home.hosts
#!include work.hosts

127.0.0.1 localhost
::1 localhost

Таким образом, я мог бы просто очистить содержимое одного или обоих этих двух дополнительных файлов, а остальные оставить.

Или, за исключением этого, есть ли лучший способ сделать это, чем просто создать небольшой скрипт, который объединяет файлы, подобные этим, в новый файл hosts, и, как часть моей настройки автоматизации, я сначала очищаю некоторые из этих дополнительных файлов, и затем я вызываю сценарий для перестройки одного файла hosts из этих дополнительных файлов?

3 ответа3

7

Я не знаю ни о какой возможности включения. Однако я хотел бы создать разделы в моем файле hosts, а затем использовать скрипт для комментирования строк в каждом разделе, используя, например, sed.

Таким образом, ваш файл будет выглядеть

#%%%HOME.HOSTS%%%
#Put here the contents of home.hosts
#%%%WORK.HOSTS%%%
#Put here the contents of work.hosts

#%%%ALWAYS_ON%%%
127.0.0.1 localhost
::1 localhost

Редактировать: добавление в быструю попытку изменить поля.

Удаление комментария для HOME.HOSTS

 sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^#\([^%]\)/\1/g' hosts

Откладывать комментарии для HOME.HOSTS

 sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^\([^#]\)/#\1/g' hosts

Это базовая версия, и ее необходимо адаптировать к вашим потребностям.

0

Поскольку dscl больше не работает из-за перехода на OpenDirectoryService, одним из вариантов является использование ghost:

sudo gem install ghost

sudo ghost add fw.test.se 10.0.0.1

... добавим этот раздел в /etc /hosts:

# ghost start
10.0.0.1 fw.start.se
# ghost end

Чтобы очистить секцию #ghost в файле hosts (это позволяет легко заменить список хостов новым):

sudo ghost empty

Вы можете найти больше информации о призраке здесь:https://github.com/bjeanes/ghost

0

У меня был похожий случай использования, когда мне нужно было получить доступ к службам в трех разных местах, используя разные настройки LAN / WAN в файле hosts. Ответ Каролоса выше - одно из возможных решений. Мой подход здесь.

1 - ссылка на http://apple.stackexchange.com/q/139267/74657

2 - созданные файлы хостов для каждого местоположения (hosts.work, hosts.home, hosts.vendor)

3. Используя скрипт soloz, здесь (https://github.com/slozo/Network-listener) всякий раз, когда я подключаюсь к домашней сети, я выполняю простой скрипт для переключения файла hosts.

Самый простой способ будет

mv hosts.home /etc/hosts

в качестве альтернативы вы можете автоматизировать ответ Karolos выше, используя sed, чтобы обновить выходной файл при подключении к определенному SSID, который вы можете легко обнаружить и запустить, используя вышеупомянутый скрипт soloz.

Надеюсь, что это поможет кому-нибудь наткнуться на эту тему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .