разделить httpd на более мелкие файлы

разделить httpd на более мелкие файлы

Привет, мне нужно извлечь каждый VirtualHosts из моего httpd.conf в отдельные файлы для более удобного управления.

Оригинальный httpd.conf.

..
<VirtualHost *:XXXX>
  SuexecUserGroup user1 groupX
  ...
</VirtualHost>
<VirtualHost *:XXXY>
  SuexecUserGroup user2 groupY
  ...
</VirtualHost>
<VirtualHost *:XXYY>
  SuexecUserGroup user3 groupZ
  ...
</VirtualHost>
...

И мне бы хотелось иметь файлы типа: - XXXX_user1.conf, содержащие:

Listen XXXX
<VirtualHost *:XXXX>
  SuexecUserGroup user1 groupX
  ...
</VirtualHost>

- XXXY_user2.conf, содержащий:

Listen XXXY
<VirtualHost *:XXXY>
  SuexecUserGroup user2 groupY
  ...
</VirtualHost>

Звучит немного сложно, но мне нужно сделать около 500 вручную ;(

Большое спасибо за ответы

решение1

Попробуйте это:

#!/usr/bin/gawk -f
BEGIN {
    RS = "</VirtualHost>\n"
}
{
    prefix = gensub("*:([^>]*)>", "\\1", "1", $2)
    filename = prefix "_" $4 ".conf"
    print "Listen " prefix "\n" $0 "\n" RS > filename
}

Сохраните его в файле, например, с именем «httpdsplit», и выполните:

$ chmod u+x httpdsplit
$ ./httpdsplit httpd.conf

решение2

Хотя вы не упомянули об этом, это похоже на apache httpd.conf. Хотя я рекомендую существующий ответ, который разделяет файлы, есть и другой вариант.

Еслисервер Apache создан с использованием mod_perlиесливы знаете (или хотите изучить) Perl, помните, что он mod_perlсвязывается со всеми аспектами apache, включая config. Вы можете написать config с помощью Perl stanza и сгенерировать VirtualHost config в самом perl.

Связанный контент