Я работаю над некоторыми сценариями автоматизации для настройки сетевых параметров, содержимого файлов хостов и файлов / etc / resolver при доступе к различным сетям, между которыми я часто бываю.
Могут возникнуть некоторые комбинации, которые требуют внесения изменений в файл hosts, и я бы хотел избежать создания матрицы различных комбинаций, повсеместно дублирующих общие настройки.
Например, я могу быть на рабочей сети, то есть. в здании, или я могу получить к нему доступ через VPN. В обоих случаях мне нужно добавить некоторые настройки в файл hosts для правильной работы сети, некоторые являются общими, некоторые нет. Кроме того, если я использую VPN, я могу быть дома, и в этом случае в файле хостов есть некоторые другие настройки, которые я также хочу добавить.
Поэтому я надеялся, что вместо того, чтобы создать один файл для «дома, доступа к работе через VPN» и «дома, не доступа к работе» и т. Д., Есть ли способ включить другие файлы?
Например, допустим, работает следующий гипотетический синтаксис:
#!include home.hosts
#!include work.hosts
127.0.0.1 localhost
::1 localhost
Таким образом, я мог бы просто очистить содержимое одного или обоих из этих двух дополнительных файлов, а остальные оставить.
Или, кроме этого, есть ли лучший способ сделать это, чем просто создать небольшой сценарий, который объединяет файлы, подобные этим, в новый файл hosts, и в качестве части моей настройки автоматизации я сначала очищаю некоторые из этих дополнительных файлов, и затем я вызываю сценарий для перестройки одного файла hosts из этих дополнительных файлов?
источник
dscl
напрямую?dscl
команде, мне также придется исследовать это.dscl
, для которых/etc/hosts
просто является одним из доступных источников данных, предоставляя (конечно) сопоставления имени хоста / IP-адреса. Настройка сценария, который записываетdscl
и очищает кэш, может работать лучше в вашей ситуации, чем хранить несколько копий файла hosts или перезаписывать его все время.Ответы:
Я не знаю ни о какой возможности включения. Однако я хотел бы создать разделы в моем файле hosts, а затем использовать скрипт для комментирования строк в каждом разделе, используя, например, sed.
Таким образом, ваш файл будет выглядеть
Редактировать: добавление в быструю попытку изменить поля.
Удаление комментария для HOME.HOSTS
Откладывать комментарии для HOME.HOSTS
Это базовая версия, и ее необходимо адаптировать к вашим потребностям.
источник
sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^#\([^%]\)/\1/g' hosts
и о разделе в файле hosts, пожалуйста. Я действительно не понимаю, почему :(sed
добавить или удалить символ # в начале строк между двумя # %%% строками. Это будет комментировать или снимать комментарии строк. В примере показано, как комментировать раздел HOME.HOSTS с помощью # %%% HOME.HOSTS; вы должны использовать # %%% WORK.HOSTS вместо этого в команде sed, чтобы комментировать или снимать комментарии в разделе WORK.HOSTS.Поскольку dscl больше не работает из-за перехода на OpenDirectoryService, одним из вариантов является использование ghost:
... добавим этот раздел в / etc / hosts:
Чтобы очистить секцию #ghost в файле hosts (это позволяет легко заменить список хостов новым):
Вы можете найти больше информации о призраке здесь: https://github.com/bjeanes/ghost
источник
У меня был похожий случай использования, когда мне нужно было получить доступ к службам в трех разных местах, используя разные настройки 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, упомянутого выше.
Надеюсь, что это поможет кому-нибудь наткнуться на эту тему.
источник